0
當屬性我有一個XML文件:擺脫的xmlns的添加節點到現有的XML
<ns2:root xmlns:ns2="namespace">
<ns2:a>
<ns2:b>some content</b>
<ns2:c>some content</c>
<ns2:d>some content</d>
</a>
</root>
我需要在特定的位置添加一個新的節點,我的代碼是:
var doc = XDocument.Load(file);
XNamespace ns2 = "namespace";
doc.Element(ns2 + "root").Element(ns2 + "a").Element(ns2 + "c").AddAfterSelf(
new XElement(ns2+"new",
new XElement("new1",
new XElement("new2","some content"),
new XElement("new3", "some content"))));
的輸出是:
<ns2:root xmlns:ns2="namespace">
<ns2:a>
<ns2:b>some content</b>
<ns2:c>some content</c>
<ns2:new>
<new1 xmlns="">
<new2>some content</new2>
<new3>some content</new3>
</new1>
</new>
<ns2:d>some content</d>
</a>
</root>
所需的輸出是:
<ns2:root xmlns:ns2="namespace">
<ns2:a>
<ns2:b>some content</b>
<ns2:c>some content</c>
<ns2:new>
<new1>
<new2>some content</new2>
<new3>some content</new3>
</new1>
</new>
<ns2:d>some content</d>
</a>
</root>
如何避免將xmlns atrribute添加到節點new1?
在希望的輸出中編輯錯誤。
從* *信息的角度來看,它們是相同的每一個元素名稱前添加「NS2 +」。通常,您不應該關心XML工具如何選擇代表信息,除非您將此XML提供給實際上不適用於XML的內容,否則它不應該成爲問題 - 如果它適用於「字符串已滿的尖括號看起來像XML「,但要求絕對格式化,那麼通常最好是推動更改已損壞的組件,而不是試圖在XML中強制使用特定的表示。 –
您的示例XML無效,如果更正,我無法重現您聲稱的行爲。我強烈懷疑在XML中有*實際上* xmlns =「...」',這會顯着改變事情。此外,您所需的輸出與您當前的輸出非常不同 - 它具有包含文本的「new1」和「new2」元素,而不是包含具有文本的「new2」和「new3」的「new1」。請展示一個簡短但完整的示例來展示問題,並讓您的問題保持一致。 –