2

首先,对不起我的英语不好,我还在学习。因此,我必须根据其属性删除 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>

例如,我必须删除所有具有属性 value="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>
4

2 回答 2

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>
于 2013-11-03T23:14:50.480 回答
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();
            }
        }
于 2013-11-03T23:30:51.990 回答