2012-06-19 62 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