3

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

对于某些应用程序,我正在编写完全没有命名空间内容的 XML 文件。那部分我无法改变。但现在我要用我自己的应用程序定义的元素名称来扩展这些文件,并且我想将它们放在不同的命名空间中。为此,结果应如下所示:

<doc xmlns:x="urn:my-app-uri">
  <a>existing element name</a>
  <x:addon>my additional element name</x:addon>
</doc>

我使用了一个 XmlNamespaceManager 并将我的 URI 添加了前缀“x”。我还将它传递给每个 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 结果?

4

1 回答 1

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 是否正确,但我希望如此。

于 2010-04-05T16:14:07.183 回答