我正在使用以下代码
var xmlFile = fromConfiguration + @"xyz.xml";
XDocument document = XDocument.Load(xmlFile);
var xElement = document.Root;
xElement.Add(new XElement("elementName", "elementText"));
document.Save(xmlFile);
XDocument documentN = XDocument.Load(xmlFile);
XElement element = (from xml2 in documentN.Descendants("elementName")
select xml2).FirstOrDefault();
element.RemoveAttributes();
documentN.Save(xmlFile);
这给了我..
<elementName xmlns="">elementText</elementName>
默认添加xmlns。 有没有办法可以在没有xmlns的情况下添加?
<elementName>elementText</elementName>
这是我需要在xsl文件中解析的内容。
ANy帮助??
答案 0 :(得分:2)
其中一个祖先元素必须设置默认命名空间,例如
<foo xmlns="http://foo.bar">
<!-- Your element name -->
</foo>
如果你想:
<foo xmlns="http://foo.bar">
<elementName>elementText</elementName>
</foo>
...那么这意味着elementName
隐含在http://foo.bar
的命名空间中,因为默认是继承的。所以你应该使用:
XNamespace ns = "http://foo.bar";
xElement.Add(new XElement(ns + "elementName", "elementText"));
如果您可能在不同的文件中有不同的命名空间,则可以通过编程方式确定默认命名空间 - 尽管可能不是根元素的命名空间,例如
<other:foo xmlns="http://foo.bar" xmlns:other="http://surprise">
<!-- This is still in http://foo.bar -->
<elementName>elementText</elementName>
</foo>
答案 1 :(得分:0)
通常最好学习如何在命名空间中查找或选择元素以及如何构建它们,如果你这样做
xElement.Add(new XElement(xElement.Name.Namespace + "elementName", "elementText"));
您不会遇到xmlns="''
。