使用DotNet从XML String中删除已知位置的元素的最佳方法?

时间:2008-10-21 10:16:26

标签: .net xml

我很欣赏dotnet现在有很多机制可以用多种方式处理XML ...

假设我有一个包含XML的字符串....

<?xml version="1.0" encoding="utf-8" ?>
<root>
    <Element1>
        <Element1_1>
            SomeData
        </Element1_1>
    </Element1>
    <Element2>
        Some More Data
    </Element2>
</root>

删除Element1_1的最简单(最易读)方式是什么?

更新......我可以使用.Net 3.5中提供的任何.Net API:D

2 个答案:

答案 0 :(得分:7)

您可以使用哪些API?例如,您可以使用.NET 3.5和LINQ to XML吗?如果是这样,XNode.Remove是你的朋友 - 只需选择Element1_1(以LINQ to XML轻松实现的多种方式)并在其上调用Remove()。

如何选择元素的示例:

XElement element = doc.XPathSelectElement("/root/Element1/Element1_1");
element.Remove();

或者:

XElement element = doc.Descendants("Element1_1").Single().Remove();

答案 1 :(得分:6)

我会用这个:

XmlDocument x = new XmlDocument();
x.LoadXml(SomeXmlString);

foreach (XmlNode xn in x.SelectNodes("//Element1_1"))
  xn.ParentNode.RemoveChild(xn);

或与显式XPath相同:

foreach (XmlNode xn in x.SelectNodes("/root/Element1/Element1_1"))
  xn.ParentNode.RemoveChild(xn);

或者,甚至更具体:

XmlNode xn = x.SelectSingleNode("/root/Element1/Element1_1");
xn.ParentNode.RemoveChild(xn);