2010-04-04 14 views
3

該主題可能太短,無法解釋它...如何在不使用xmlns =「...」的情況下使用XML命名空間前綴? (.NET)

我寫出了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被寫入到每一個我的其他元素,並沒有常見的前綴被寫入我想要的文檔元素。

如何獲得上述XML與.NET的結果?

回答

2

一般使用DOM 2級核心方法,你會期望:

doc.documentElement.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:x", "urn:my-app-uri"); 

添加命名空間聲明根元素;那麼如果使用DOM Level 3 LS中指定的名稱空間算法進行序列化,則將使用該前綴而不添加新的xmlns聲明。

還沒有測試過.NET的XmlDocument是否正確,但我希望如此。

相關問題