C# 如何从XML中按属性删除特定节点?

C# 如何从XML中按属性删除特定节点?,c#,.net,xml,C#,.net,Xml,我是一名新手,在一些XML操作(如open和Delete)中苦苦挣扎。我已经完成了添加部分 Partys.xml <?xml version="1.0" encoding="utf-8"?> <Partys> <Customers> <Customer CustomerID="1"> <PersonalName> <LastName>Baker</LastName>

我是一名新手,在一些XML操作(如open和Delete)中苦苦挣扎。我已经完成了添加部分

Partys.xml

<?xml version="1.0" encoding="utf-8"?>
<Partys>
  <Customers>
    <Customer CustomerID="1">
      <PersonalName>
        <LastName>Baker</LastName>
        <FirstName>Eugene</FirstName>
      </PersonalName>
      <Citizenship>Africa</Citizenship>
    </Customer>
    <Customer CustomerID="2">
      <PersonalName>
        <LastName>Baker</LastName>
        <FirstName>Eugene</FirstName>
      </PersonalName>
      <Citizenship>Africa</Citizenship>
    </Customer>
  </Customers>
 </Partys>

面包师
尤金
非洲
面包师
尤金
非洲
问:我想打开CustomerID(属性)为1的节点DetailCustomer。这个的C代码是什么


Q:我想删除CustomerID(属性)为2的节点customer。这个的C代码是什么?

您可以尝试以下方法:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("Parties.xml");
XmlNode t = xmlDoc.SelectSingleNode("/Partys/Customers/Customer[@CustomerID='2']");
t.ParentNode.RemoveChild(t);
xmlDoc.Save();
一旦你有了t,你可以用它做任何你想做的事情,包括在控制台中显示它(通过访问各种属性)


在这里,我们删除了节点并将其保存回文件,但您可以对XmlDocument执行任何操作。…

您可以尝试以下操作:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("Parties.xml");
XmlNode t = xmlDoc.SelectSingleNode("/Partys/Customers/Customer[@CustomerID='2']");
t.ParentNode.RemoveChild(t);
xmlDoc.Save();
一旦你有了t,你可以用它做任何你想做的事情,包括在控制台中显示它(通过访问各种属性)


在这里,我们删除了节点并将其保存回文件,但是您可以对XmlDocument执行任何操作……

什么是“
打开”
”操作?就像在可视化树状视图中,展开子节点?!?你可能会发现这个链接很有用:很抱歉说得含糊不清。通过Open,我试图在控制台中显示节点细节。谢谢。顺便说一句,没有“C#NET”这样的东西。该语言名为“C”。谢谢你,John,请更正。什么是“
打开
”操作?就像在可视化树状视图中,展开子节点?!?你可能会发现这个链接很有用:很抱歉说得含糊不清。通过Open,我试图在控制台中显示节点细节。谢谢。顺便说一句,没有“C#NET”这样的东西。该语言被命名为“C *”。谢谢你,约翰-为了纠正。如果它奏效,请考虑支持并接受答案:-再一次,在SelectSinglenode中传递参数的正确方法是什么?int-ID;XmlNode t=xmlDoc。选择SingleNode(“/Partys/Customers/Customer[@CustomerID='2']”);如何发送“ID”而不是“2”?再次感谢。int ID=2;XmlNode customersNode=xDoc.SelectSingleNode(//Partys/Customers/Customer[@CustomerID='“+ID+”]);CustomerNode.ParentNode.RemoveChild(CustomerNode);xDoc.Save(@.\\Partys.xml”);它显示:对象引用未设置为对象的实例。有什么线索吗?如果它奏效了,请考虑一下投票并接受答案:-再一次,在SelectSinglenode中传递参数的正确方法是什么?int-ID;XmlNode t=xmlDoc。选择SingleNode(“/Partys/Customers/Customer[@CustomerID='2']”);如何发送“ID”而不是“2”?再次感谢。int ID=2;XmlNode customersNode=xDoc.SelectSingleNode(//Partys/Customers/Customer[@CustomerID='“+ID+”]);CustomerNode.ParentNode.RemoveChild(CustomerNode);xDoc.Save(@.\\Partys.xml”);它显示:对象引用未设置为对象的实例。有线索吗?