如何从xml中删除子记录

本文关键字:删除 记录 xml | 更新日期: 2023-09-27 18:15:20

我试图在xml中删除ChildRecord <cat>

这里是源XML

  <Main>
    <Student>
      <name>paul</name>
    </Student>
    <cat>
      <category>
        <id>1</id>
        <name>Architecture</name>
      </category>
      <category>
        <id>2</id>
        <name>Education</name>
      </category>
    </cat>
  </Main>

我试过这个代码。

  XmlDocument xdoc = new XmlDocument();
  xdoc.Load(Server.MapPath("main.xml"));
  XmlNodeList nodes = xdoc.GetElementsByTagName("cat");
  foreach (XmlNode node in nodes)
  {
  xdoc.RemoveChild(node);
  }

Error I'm seeing
{系统。ArgumentException:要删除的节点不是这个节点的子节点。

请帮帮我。

结果XML应该看起来像

  <Main>
    <Student>
      <name>paul</name>
    </Student>
  </Main>

如何从xml中删除子记录

使用Linq2Xml会更容易

var xDoc = XDocument.Load(filename);
xDoc.Root.Element("cat").Remove();
xDoc.Save(filename);

PS: namespace: System.Xml.Linq

编辑

使用XmlDocument

XmlDocument xdoc = new XmlDocument();
xdoc.Load(Server.MapPath("main.xml"));
XmlNode node = xdoc.GetElementsByTagName("cat")[0];
node.ParentNode.RemoveChild(node);
xdoc.Save(filename);