我有一个XML文件,我想从中提取ID属性为“ Needed”的节点:
<root>
<level1 id="NotNeeded">
</level1>
<level1 id="Needed">
<level2 id="Needed">
<level3 id="Needed">I need this one</level3>
<level3 id="NotNeeded1">I don't need this one</level3>
</level2>
<level2 id="notNeeded">
<level3 id="notNeeded">I don't need this one</level3>
</level2>
</level1>
</root>
(深度是任意的)我需要将其转换为以下形式:
<root>
<level1 id="Needed">
<level2 id="Needed">
<level3 id="Needed">I need this one</level3>
</level2>
</level1>
</root>
我正在尝试做的事情(使用伪代码,我希望这很清楚):
myextraction=[element with id "Needed"]
while [myextraction has parent]
{
myextraction=myextraction.[parent without children].Addtochildren(myextraction)
}
有没有更简单的方法可以做到这一点?(也许是内置方法?)
你可以使用Linq
到Xml
和做到这一点。
XDocument doc = XDocument.Load(filepath);
doc.Descendants()
.Where(x=>x.Attribute("id") != null && x.Attribute("id").Value == "NotNeeded")
.Remove();
欧普特(Ouput):
<root>
<level1 id="Needed">
<level2 id="Needed">
<level3 id="Needed">I need this one</level3>
</level2>
</level1>
</root>
检查一下 fiddle
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句