0

私はこのようなxmlを持っています

<Order>
 <OrderSections>
      <OrderSection type="1" name="S 1" id="3">
         <ShippingAmount>15.02</ShippingAmount>
      </OrderSection>
      <OrderSection type="1" name="S 2" id="4">
         <ShippingAmount>0</ShippingAmount>
      </OrderSection>
 </OrderSections>
</Order>

id = 4の注文セクションを見つけてXmlDocumentから削除するにはどうすればよいですか?この例を見ていましたが、検索される値が次のようなノードに属しているため、これは異なります

<players>
<player> 
    <name>User2</name>
 </player>
</players>

<OrderSection>しかし、私のXMLは属性値内にIDを持っています。

4

3 に答える 3

3

@属性に使用する必要があります:

XmlNode node = doc.SelectSingleNode("/Order/OrderSections/OrderSection[@id='4']");
node.ParentNode.RemoveChild(node);

XPath構文を見てください

于 2013-01-05T21:31:03.647 に答える
2

XmlDocumentクラスとxpathを使用して要素を見つけます

string path = "orders.xml";
XmlDocument XMLDoc = new XmlDocument();
XMLDoc.Load(path);
foreach (XmlNode entry in XMLDoc.SelectNodes("//OrderSection[@id='4']"))
{
    entry.ParentNode.RemoveChild(entry);
}
于 2013-01-05T21:31:39.423 に答える
0

LinqtoXmlを使用できます。

var xdoc = XDocument.Load(path_to_xml);
xdoc.Descendants("OrderSection")
    .Where(os => (int)os.Attribute("id") == 3)
    .Remove();
xdoc.Save(path_to_xml);
于 2013-01-05T21:26:01.917 に答える