首先,抱歉我的英语不好,我还在学习。所以,我必须根据属性删除xml文件的特定节点。这是xml文件:
<?xml version="1.0" encoding="utf-8"?>
<Lista>
<Indice value="8">
<Palavra value="casa" />
<Significados>s1,,,,</Significados>
</Indice>
<Indice value="49">
<Palavra value="teste" />
<Significados>1,2,,,</Significados>
</Indice>
<Indice value="72">
<Palavra value="cristiano" />
<Significados>ornelas,ribeiro,,,</Significados>
</Indice>
<Indice value="72">
<Palavra value="teste2" />
<Significados>s2,s3,,,</Significados>
</Indice>
</Lista>
我必须删除所有具有属性值=“72”的Indice节点和您的子节点。我怎样才能做到这一点?语言是c#,删除后的xml文件必须保持这种形式:
<?xml version="1.0" encoding="utf-8"?>
<Lista>
<Indice value="8">
<Palavra value="casa" />
<Significados>s1,,,,</Significados>
</Indice>
<Indice value="49">
<Palavra value="teste" />
<Significados>1,2,,,</Significados>
</Indice>
</Lista>
答案 0 :(得分:2)
XDocument xdoc=XDocument.Parse(xmlStr); //or XDocument.Load
var matchingElements = xdoc.Root
.Descendants("Indice")
.Where(e => (int)e.Attribute("value") == 72)
.ToList();
foreach(var elem in matchingElements)
{
elem.Remove();
}
xdoc.Save(newFileName);
保存以下文档:
<Lista>
<Indice value="8">
<Palavra value="casa" />
<Significados>s1,,,,</Significados>
</Indice>
<Indice value="49">
<Palavra value="teste" />
<Significados>1,2,,,</Significados>
</Indice>
</Lista>
答案 1 :(得分:0)
这是Spender的另一种选择,尽管如果他的作品他应该回答问题。
XmlDocument doc = new XmlDocument();
doc.Load("xml path");
XmlNode node = doc.SelectSingleNode("/Lista");
foreach (XmlNode nodes in node.SelectNodes("Indice/@value"))
{
if (nodes.Value == "72")
{
nodes.RemoveAll();
}
}