删除XML根目录下的特定节点
本文关键字:节点 XML 根目录 删除 | 更新日期: 2023-09-27 18:21:14
下面是我的XML;
<XML ID="Microsoft Search Thesaurus">
<thesaurus xmlns="x-schema:tsSchema.xml">
<diacritics_sensitive>1</diacritics_sensitive>
<expansion>
<sub>Internet Explorer</sub>
<sub>IE</sub>
<sub>IE5</sub>
</expansion>
<expansion>
<sub>run</sub>
<sub>jog</sub>
</expansion>
</thesaurus>
</XML>
我想从XML中删除"扩展"节点。去除过程后,会是这样;
<XML ID="Microsoft Search Thesaurus">
<thesaurus xmlns="x-schema:tsSchema.xml">
</thesaurus>
</XML>
我的代码如下;
XDocument tseng = XDocument.Load("C:''tseng.xml");
XElement root = tseng.Element("XML").Element("thesaurus");
root.Remove();
tseng.Save("C:''tseng.xml");
"root.Remove()"行出现错误"Object reference not set to a instance of a Object"。如何从XML文件中删除"扩展"节点?谢谢
使用:
将仅删除expansion
元素:
XNamespace ns = "x-schema:tsSchema.xml";
tseng.Root.Element(ns + "thesaurus")
.Elements(ns + "expansion").Remove();
将删除thesaurus
:的所有子项
XNamespace ns = "x-schema:tsSchema.xml";
tseng.Root.Element(ns + "thesaurus").Elements().Remove();
类似的东西
XElement root = tseng.Element("XML").Element("thesaurus");
tseng.Element("XML").Remove(thesaurus);
从其父节点中删除节点。。。
如果你只想删除扩展节点,那么基本上你会找到一个remove,直到tere在词库中不存在,或者返回它们的列表,并循环从它们的父词库中删除它们。
您没有成功,因为您的thesaurus
具有不同的命名空间。您需要指定ti才能使其工作。
XNamespace ns = "x-schema:tsSchema.xml";
XDocument tseng = XDocument.Parse(xml);
XElement root = tseng.Element("XML").Element(ns + "thesaurus");
root.Elements().Remove();
一般来说,您的代码是有效的。唯一需要删除子元素而不是根元素才能获得所需的结果。