2013-01-05 91 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); 
} 
相關問題