C# 删除xml中的xmlns属性,以获得简单的纯xml节点
我正在使用以下代码C# 删除xml中的xmlns属性,以获得简单的纯xml节点,c#,xml,xslt,linq-to-xml,C#,Xml,Xslt,Linq To Xml,我正在使用以下代码 var xmlFile = fromConfiguration + @"xyz.xml"; XDocument document = XDocument.Load(xmlFile); var xElement = document.Root; xElement.Add(new XElement("elementName", "elementText")); document.Save(xmlFile); XDocument
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>
elementText
默认情况下添加xmlns。
没有xmlns我可以添加什么吗
<elementName>elementText</elementName>
elementText
这就是我需要在xsl文件中解析的内容
有什么帮助吗?通常,最好学习如何在名称空间中查找或选择元素,以及如何在这样做的情况下构造元素
xElement.Add(new XElement(xElement.Name.Namespace + "elementName", "elementText"));
您不存在
xmlns=“”
一个祖先元素必须设置默认名称空间的问题,例如
<foo xmlns="http://foo.bar">
<!-- Your element name -->
</foo>
如果在不同的文件中可能有不同的名称空间,则可以通过编程方式确定默认名称空间-尽管它可能不是根元素的名称空间,例如
<other:foo xmlns="http://foo.bar" xmlns:other="http://surprise">
<!-- This is still in http://foo.bar -->
<elementName>elementText</elementName>
</foo>
元素文本
另一方面,我正在使用以下xsl,我已经检查过它只有在不存在xmlns的情况下才有效。我在这里遗漏了什么吗?谢谢它成功了:)希望我能吻你。过去两天我一直在磕头。我遗漏了xElement.Name.namespace请记住,这并不是万无一失的-请参阅我的答案,以获取一个它有效的示例uld失败。与此相关的内容是XDocument document=XDocument.Load(xmlFile);var xElement=XDocument.Root;这将提供根节点。如何查找将元素名称作为参数传递的特定节点?@Swaraj:这是一个完全不同的问题。请阅读LINQ to XML教程,如果仍然没有找到答案,请发布新问题。
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>