如何在没有 xmlns="..." 的情况下使用 XML 命名空间前缀? (。网)
Posted
技术标签:
【中文标题】如何在没有 xmlns="..." 的情况下使用 XML 命名空间前缀? (。网)【英文标题】:How to use XML namespace prefixes without xmlns="..." everywhere? (.NET) 【发布时间】:2010-04-04 14:08:56 【问题描述】:主题可能太短,无法解释......
对于某些应用程序,我正在编写完全没有命名空间内容的 XML 文件。那部分我无法改变。但现在我要用我自己的应用程序定义的元素名称来扩展这些文件,并且我想将它们放在不同的命名空间中。为此,结果应如下所示:
<doc xmlns:x="urn:my-app-uri">
<a>existing element name</a>
<x:addon>my additional element name</x:addon>
</doc>
我使用了 XmlNamespaceManager 并添加了带有前缀“x”的 URI。我还将它传递给每个 CreateElement 以获得我的附加元素名称。但我能得到的最接近的是:
<doc>
<a>existing element name</a>
<addon xmlns="urn:my-app-uri">my additional element name</addon>
</doc>
或者也可以
<x:addon xmlns:x="urn:my-app-uri">my additional element name</x:addon>
所以关键是我的 URI 被写入了我的每一个附加元素,并且没有向我想要的文档元素写入公共前缀。
如何使用 .NET 获得上述 XML 结果?
【问题讨论】:
【参考方案1】:通常使用您期望的 DOM Level 2 Core 方法:
doc.documentElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:x", "urn:my-app-uri");
将命名空间声明添加到根元素;那么如果使用 DOM Level 3 LS 中指定的命名空间算法进行序列化,则将使用该前缀而不添加新的 xmlns
声明。
尚未测试 .NET 的 XmlDocument 是否正确,但我希望如此。
【讨论】:
以上是关于如何在没有 xmlns="..." 的情况下使用 XML 命名空间前缀? (。网)的主要内容,如果未能解决你的问题,请参考以下文章