我需要使用Linq to xml处理一些xml文件。
我有一个已加载的现有XDocument
现在,我似乎无法向其添加 namespace 。
我做:
//Load an existing xml into a XDocument
XDocument xdoc=XDocument.Load(myXml);
//Create a namespace
XNamespace myNS="http://www.w3.org/2001/XMLSchema-instance/MyShinyNewNamespace";
xAttribute myAttr=new XAttribute(XNamespace.Xmlns +"myNS",myNS);
//Add new namepsace to root
xdoc.Root ????
What do you do here?
如何检索我的 namespace ?
如何删除/更换?
非常感谢
最佳答案
首先,虽然XML标记允许您使用
<root xmlns="http://example.com/ns">
<foo>
<bar>baz</bar>
</foo>
</root>
使用单个 namespace 声明属性将根元素以及所有后代元素放入声明的 namespace 中,当您操作树模型时,您需要更改所有元素的
Name
,因此需要XNamespace myNs = "http://example.com/ns";
foreach (XElement el in xdoc.Descendants())
{
el.Name = myNs + el.Name.LocalName;
}
如果您还想设置某个前缀
pf
,则另外设置 xdoc.Root.Add(new XAttribute(XNamespace.Xmlns + "pf", myNs));
关于linq-to-xml - 向现有XDocument添加 namespace ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14294497/