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”。请展示一个简短但完整的示例来展示问题,并让您的问题保持一致。 –