Лучший способ удалить элемент в известном месте из строки XML, используя DotNet? - PullRequest
3 голосов
/ 21 октября 2008

Я ценю, что теперь в 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 API, доступный в .Net 3.5: D

Ответы [ 2 ]

7 голосов
/ 21 октября 2008

Какие 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();
6 голосов
/ 21 октября 2008

Я бы использовал это:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...