2013-01-05 49 views
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的去除呢?订单部分的XML,我一直在寻找this example,但那是不同的,因为正在搜索的值属于一个节点像

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

,但我的XML具有<OrderSection>属性值中的ID。

回答

3

您需要使用@的属性:

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

XPath Syntax

0

您可以使用LINQ到XML:

var xdoc = XDocument.Load(path_to_xml); 
xdoc.Descendants("OrderSection") 
    .Where(os => (int)os.Attribute("id") == 3) 
    .Remove(); 
xdoc.Save(path_to_xml); 
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); 
} 
相关问题