gpt4 book ai didi

.NET XmlDocument : Including default namespace prefixes in OuterXml

转载 作者:行者123 更新时间:2023-12-04 16:52:14 25 4
gpt4 key购买 nike

我有一个包含以下 XML 的 XmlDocument 对象:

<root>
<childlist xmlns:pre="mydomain.com">
<pre:child someattribute="value" />
</childlist>
</root>

以字符串形式接收 XML 文档的客户端应用程序要求元素具有“pre:”前缀。

我的问题是,当我使用 .OuterXml 方法从 XmlDocument 获取 XML 文本时,前缀被删除:
<root>
<childlist xmlns:pre="mydomain.com">
<child someattribute="value" /> <!--where's the prefix?-->
</childlist>
</root>

我知道,从技术上讲,默认 namespace 不需要前缀,但是,同样,如果没有前缀,接收此 XML 的客户端将无法工作。

当我使用调试器检查节点时,.Name 属性是“pre:child”。所以 XmlDocument 对象存储前缀,它只是没有出现在 .OuterXml 中。

有没有办法序列化 XmlDocument 对象并包含元素名称前缀?

我尝试了几种使用 XmlSerializer 和 XmlTextWriter 对象的方法,但得到了相同的结果。也许 XmlDocument、XmlSerializer 或 XmlTextWriter 上有一个属性可以指定我希望将默认命名空间前缀包含在输出中?

(顺便说一句,如果您只是使用 .LoadXml() 将上述 XML 加载到 XmlDocument 对象中,则前缀将出现在 .OuterXml 中。只有在您使用 .AppendNode() 构建文档时,它们才会消失。)

最佳答案

有点找到了答案:

http://bytes.com/topic/c-sharp/answers/568487-inserting-xml-node-maintaining-prefix

它并不完美——它假设提供 NamespacedURI 的元素也需要前缀。但这是一个可行的开始。

关于.NET XmlDocument : Including default namespace prefixes in OuterXml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29017321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com