如何在没有xmlns =“...”的地方使用XML名称空间前缀? (。净)

时间:2010-04-04 14:08:56

标签: .net xml namespaces prefix

主题可能太短暂无法解释......

对于某些应用程序,我正在编写没有名称空间内容的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 个答案:

答案 0 :(得分:2)

通常使用您期望的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是否正确,但我希望如此。