2012-06-19 64 views
0

我試着在這裏查找,但無法找到正確的答案。我有一個有一堆節點的XML字符串。
我想從這個字符串中只提取幾個節點,並附加一個新的根元素並返回它。XML字符串 - 只選擇某些節點

我知道如何通過加載到XMLDocument並選擇節點來完成此操作。使用XpathNavigator或XmlReader有沒有更好的方法?

這是我的字符串

<root> 
    <node1/> 
    <node2/> 
    <node3/> 
    <node4/> 
    <node5> 
</root> 

我希望我的輸出字符串是

<root> 
    <node3/> 
    <node4/> 
</root> 

擁有有效的方式來完成。

+0

所以你想刪除節點1,3和5? – user845279

+0

是的,但實際上我可能需要刪除更多的節點。我想我的意思是說,可能有超過5個節點,其中我只需要2個。另外我的輸入是一個字符串(我知道我在我的文章中提到過,只是強調) –

+0

您是否考慮過XSLT? – CSharpenter

回答

0

爲了簡單起見,我會用XDocument.Parse()。並通過提供的功能操縱DOM。由於XML是以字符串形式提供的,可能很小,所以我敢打賭,你不會看到複雜性問題。

如果要刪除很多節點,我建議您使用XPath字符串列表。然後,對於每個字符串,可以使用doc.XPathSelectElements()查找所有元素,並在每個元素上調用remove()。生成的XDocument將只剩下其餘的節點。

+0

感謝您的回答。然而,即使我得到了XDocument部分,我會用什麼方法來實現我想要的? –

+0

這是我試過的,但是它刪除了除根XDocument x = XDocument.Parse(xmlstring)之外的所有東西; (e => e.Name!=「node3」|| e.Name!=「node4」)。Remove(); –

+0

嘗試'&&'而不是'||'。 – user845279