如何强制 XmlWriter 正确处理命名空间?

2024-03-22

我想使用 XmlWriter 编写类似这样的内容(全部在一个命名空间中):

<Root xmlns="http://tempuri.org/nsA">
  <Child attr="val" />
</Root>

但我似乎能得到的最接近的是:

<p:Root xmlns:p="http://tempuri.org/nsA">
  <p:Child p:attr="val" />
</p:Root>

使用此代码:

using System;
using System.Text;
using System.Xml;

namespace ConsoleApplication1
{
    internal class Program
    {
        private const string ns = "http://tempuri.org/nsA";
        private const string pre = "p";

        private static void Main(string[] args)
        {
            var sb = new StringBuilder();
            var settings = new XmlWriterSettings
                     {
                       NamespaceHandling = NamespaceHandling.OmitDuplicates, 
                                             /* ineffective */             
                       Indent = true
                     };
            using (XmlWriter writer = XmlWriter.Create(sb, settings))
            {
                writer.WriteStartElement(pre, "Root", ns);
                writer.WriteStartElement(pre, "Child", ns);
                writer.WriteAttributeString(pre, "attr", ns, "val"); 
                                             // breaks namespaces    
                writer.WriteEndElement();
                writer.WriteEndElement();
            }
            Console.WriteLine(sb.ToString());
        }
    }
}

当我不指定前缀时,我得到:

<Root xmlns="http://tempuri.org/nsA">
  <Child p2:attr="val" xmlns:p2="http://tempuri.org/nsA" />
</Root>

在整个生成的文档(p3、p4、p5 等)中,都会在重复的命名空间中生成这些“幻影”前缀。

当我不写属性时,我会得到我想要的输出(显然它缺少属性)。

为什么不是XmlWriter像我问的那样省略重复的名称空间?


尝试这样:

using System;
using System.Text;
using System.Xml;

class Program
{
    private const string ns = "http://tempuri.org/nsA";

    static void Main()
    {
        var settings = new XmlWriterSettings
        {
            Indent = true
        };
        using (var writer = XmlWriter.Create(Console.Out, settings))
        {
            writer.WriteStartElement("Root", ns);
            writer.WriteStartElement("Child");
            writer.WriteAttributeString("attr", "", "val");
            writer.WriteEndElement();
            writer.WriteEndElement();
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何强制 XmlWriter 正确处理命名空间? 的相关文章

  • XSLT:如何防止 XSLT 代码在输出 xml 中生成冗余空格

    使用我的 XSL 代码 每当我删除一个元素 它都会在输出 xml 中引入一个空白行空间 这会妨碍树形结构外观XML的 你能建议我 如何摆脱它 这是示例代码示例 XML 示例
  • 在布局中添加空格

    我正在尝试在 android 中创建空行 这就是我一直在做的事情 android layout width fill parent android layout height wrap content android text n n 我想
  • 使用字符串数组填充 Spinner

    当谈到 Android 应用程序时 我属于新手联盟 我希望用数组或字符串填充 Spinner 它是一个转换器应用程序 下面是我的 XML 文件的摘录 我希望填充 Spinner
  • IIS 7.5 中未显示 ASP.NET 功能

    我在 IIS 7 5 中遇到问题 其中 ASP NET 功能部分未显示在我的 Web 应用程序上 我的环境 Windows 2008 R2 SP1 IIS 7 5 7 5 7600 NET Framework 4 0 我的问题与此处发布的问
  • BlockingCollection.TakeFromAny 方法是否适合构建阻塞优先级队列?

    我需要建立一个阻塞优先级队列 我的预感是TakeFromAny https learn microsoft com en us dotnet api system collections concurrent blockingcollect
  • 膨胀类 android.support.design.internal.BottomNavigationView 时出错

    我正在制作我的第一个应用程序 这是一个简单的应用程序 带有启动屏幕和主要活动 现在我有两个构建变体 免费版本 活动底部有 Admob 横幅 付费版本 该应用程序不会在底部显示 admob 横幅 而是将其替换为用于切换活动的底部导航视图 我将
  • xml 拉解析器资产 xml

    如何使用拉解析器解析资产文件夹中的本地 XML 文件 我无法让拉解析器工作 它总是抛出 io 异常 我想我无法获取文件的路径或连接到该文件 mixm 我正在尝试各种方法来从 资产 和 资源 加载本地文件 但要按要求回答您的问题 因为其他人似
  • 如何附加到 xml

    我有这个xml
  • 用于冒号分隔标签的 XML 解析器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用scrapy抓取xml url

    你好 我正在使用 scrapy 来抓取 xml url 假设下面是我的 Spider py 代码 class TestSpider BaseSpider name test allowed domains www example com s
  • c#Registry to XML无效字符问题

    我在尝试从注册表创建 XML 文件时遇到问题 在我的笔记本电脑 W7 64b 上它工作正常 生成了 xml 文件 但在另一台计算机 Xp 32b 上抛出异常 System ArgumentException 十六进制值 0x00 是无效字符
  • 组合框由于某种原因被链接

    我有以下代码来填充 3 个组合框 private void PopulateDDLs SqlConnection connection SqlCommand command SqlDataReader reader DataTable dt
  • 将属性应用于返回值 - 在 F# 中

    在 C 中 可以将属性应用于方法的返回 return DynamicAttribute public object Xyz return new ExpandoObject 这在 F 中可能吗 背景 我想要一个用 F 编写的库的方法 该方法
  • 如何获取 cElementTree 中某个元素的所有文本子元素?

    我正在使用cElementTreePython 中的模块用于获取某个文本的子级XML树 使用text财产 但它似乎只适用于直接文本子项 见下文 python gt gt gt import xml etree cElementTree as
  • 在工具栏下显示内容

    您好 我试图简单地将我的内容放在工具栏下方 但是当我运行我的应用程序时 某些内容本应位于工具栏下方 却隐藏在工具栏后面 我已经阅读了有关使用框架布局来尝试将其分离的内容 但我有点卡住了 我目前正在使用该软件提供的基本 android stu
  • & 在 xml 文件中算作一个还是多个字符?

    我正在使用的 XML 模式具有特定的字符串字符长度 所以我可能有一个类似的字符串 Jim Mary 在 C 中是 10 个字符 但是当它写入 xml 时 它会变成 Jim amp Mary 如果 XML 模式规定字符串最多只能有 10 个字
  • 如何使用 Webpack 加载器导入 XML,而不自动转换为 JSON

    Webpack 4 的 xml loader 自动将导入的 XML 文件转换为 JSON 通过什么方式可以导入XMLwithout转换为 JSON XML 数据将使用现有的 应用程序专用的 XML 解析器进行处理 明确地说 我绝对愿意not
  • 使用 Retrofit 2 解析 XML

    我试图从央行获取汇率 不幸的是他们没有可以提供 JSON 数据的 api 仅在 XML 中 我正在使用 Retrogit 2 我已经创建了两个类 它们描述了我从网站获得的 xml 但是当我尝试获取回调的响应时 我收到了 404 错误代码 也
  • Eclipse 在处理 xml(传入或传出)时挂起。此时CPU+磁盘尖峰

    我每天必须处理许多 XML 这极大地打断了我的工作流程 我尝试降级到 Indigo 但所有附加组件都被删除 打开xml时出现问题 切换到 xml 切换出一个 xml 甚至切换到另一个 xml 到底发生了什么事情让 XML 如此烦人 我可以禁
  • 解组转义 XML

    在 Go 中 我将如何解码此 XML 响应 我尝试过建立一个自定义UnMarshal方法在我的Answerstruct 但我运气不太好

随机推荐

  • 正确实施全局配置

    我的目标是在我正在开发的 C 游戏中拥有全局常量 以表示一些图形信息等 我当前的实现是将它们全部放在 h 中并将它们包含在各处 这是可行的 只是每次我更改设置时 都必须重新编译整个代码库 所以 我的下一个想法是将它们放入一些配置 txt 文
  • 如何替换 JUnit 5 中的 WireMock @Rule 注释?

    我在测试中使用 WireMock 并有这样一行代码 Rule public WireMockRule wireMockRule new WireMockRule 8080 我想切换到 JUnit 5 所以我添加了下一个依赖项 使用 Grad
  • C++ 数组中对象的多态性

    我是一名嵌入式软件工程师 来自位和 C 世界 在那个世界里 闪存中有数据 用C语言的const表示 RAM中有数据 RAM 昂贵且有限 而闪存则便宜且足够 此外 由于碎片问题或安全规定 不允许使用 new delete malloc 等动态
  • 创建并加载用于 openGL 的 RGBA4444 RGBA5551 中的 .png

    我正在创建一个 openGL 游戏 到目前为止 我一直在使用 RGBA8888 格式的 png 作为纹理表 但这些太占用内存了 而且我的应用程序经常崩溃 我在 Apple 网站上读到 这种格式仅在需要太多质量时才使用 并建议使用 RGBA4
  • R 赋值的 Python 等价物

    在 R 中 我可以使用assign https stat ethz ch R manual R devel library base html assign html动态地为环境中的名称分配一个值 而不是 lt Example gt ass
  • Rails 5“gemify”资产清单文件

    Update 在工作状态下得到这个 宝石可以在这里找到 https github com jakehockey10 popcircle https github com jakehockey10 popcircle 原帖 我正在尝试将 jq
  • 加载 ember.js 对象时,动画 gif 暂停

    当 ember js 正在做它的事情时 旋转器实际旋转时遇到问题 我有一个非常通用的 jsfiddle 示例来说明这个问题 http jsfiddle net h4ZcZ 2 http jsfiddle net h4ZcZ 2 我认为必须有
  • CSS3 非线性动画路径

    如何使用 css3 制作非线性动画 基本上 如果我需要从视口中取出一个盒子 并且它是一条直线向下的路径 那么使用以下代码就很容易做到 transition transform 0 5s ease in And some JS to trig
  • SoX 使用 ProcessBuilder 运行缓慢

    我正在使用 java 中的 ProcessBuilder 来运行 SoX 它将 WAV 文件修剪为 30 秒长的 WAV 文件 SoX 正在运行 因为我可以成功修剪文件的前 30 秒并将其保存为新文件 但它停在那里 但它仍在运行 这是命令生
  • 在存储到 mysql 数据库之前压缩文本

    我正在使用 php 和 MySQL 开发一个 Web 应用程序 在存储在 MySQL 数据库中 在数据库中存储压缩形式的文本之前 我使用 gzcompress php 函数压缩文本 我的问题是这样可以吗 存储压缩形式 或者这个方法会不会给我
  • 使用 Android 相机进行图像处理

    我想使用 onPreviewFrame 在将图像显示给用户之前对其进行后处理 即应用色调 棕褐色等 据我了解 返回给回调的 byte 数据以 YUV420sp 编码 人们是否已经在 J ava 中或使用 NDK 本机代码 将其解码为 RGB
  • Scala dropWhile 与过滤器

    val xs Iterator from 1 dropWhile 2 0 takeWhile lt 10 toList val ys Iterator from 1 filter 2 0 takeWhile lt 10 toList pri
  • 如何用python生成a-z范围内的随机值

    我有 python 代码 它将生成随机值 例如 JAY5uFy4F 这是我运行 python 脚本时的第一个输出 这是我的代码 a n 1 c 1 c2 3 Start 10 n 1 End 10 n 1 while 1 Num rando
  • “无法找到一组匹配的功能”——Selenium 与 Python 2.7

    将 Selenium 3 8 1 与 Python 2 7 和 Firefox Portable 54 64 位结合使用 运行此脚本时收到以下错误消息 from selenium import webdriver from selenium
  • 了解 Azure Functions 高级计划计费

    我一直在阅读有关此问题的各种文档 但无法清楚地确认我的理解 我们正在评估 Azure Functions Premium Plan 并希望对成本有更清晰的了解 我的理解如下 在高级计划中 我们可以配置最小实例数和突发大小 这是高级计划实例的
  • Android SDK 管理器下载完成后校验和错误?

    I am using Android SDK Manager revision 23 0 5 I tried to update some SDK but got this errors I tried a lot of times And
  • 测量Java中单链表的大小/长度?

    我需要帮助int size Java 中单向链表的方法 这是我到目前为止所拥有的 但它没有返回列表的正确大小 public int size int size 0 Node CurrNode head while CurrNode next
  • 如何限制 Sinatra/Active Record 中数据库字符串值的字符/字数?

    我的专栏里有一个ActiveRecord我想要有一定字数限制的数据库 本质上 我创建了一个允许用户输入文本 字符串 的表单 我想限制该字符串中允许的字符数 allposts Post limit 20 这是我到目前为止在 get 方法中所拥
  • 使用服务名称在 docker-compose React 容器中调用 API 到 django 容器

    我有一个 docker compose 其中包含一个 React 应用程序和其他 django 容器 它们位于同一网络中 因此当我尝试使用服务名称从 React 容器向其中一个 django 服务发出curl 请求时 它可以工作 但在 We
  • 如何强制 XmlWriter 正确处理命名空间?

    我想使用 XmlWriter 编写类似这样的内容 全部在一个命名空间中