Удалить дочерний узел с помощью RemoveChild () - PullRequest
3 голосов
/ 15 июля 2010

Я хотел бы удалить только этот один узел, например:

<Sample ID="544" Type="0">Sample2</Sample>

из этого XML, например:

 <Tests> <Test ID="0" AllowMultipleSelect="1">
  <Name>BaseSamples</Name>
  <Sample ID="546" Type="0">Sample1 </Sample>
  <Sample ID="135" Type="0">Sample45</Sample>
  <Sample ID="544" Type="0">Sample2</Sample>
  <Sample ID="5818" Type="0" >Sample78</Sample>
  </Test>
  </Tests>

, чтобы мойрезультаты примерно такие:

 <Tests> <Test ID="0" AllowMultipleSelect="1">
  <Name>BaseSamples</Name>
  <Sample ID="546" Type="0">Sample1 </Sample>
  <Sample ID="135" Type="0">Sample45</Sample>
  <Sample ID="5818" Type="0" >Sample78</Sample>
  </Test>
  </Tests>

Я был бы согласен с удалением любого узла за раз (так как я поместил цикл для проверки идентификаторов образцов, которые необходимо удалить). Любая помощь будет оценена, спасибозаранее.

Ответы [ 3 ]

5 голосов
/ 09 мая 2016
XmlElement el = (XmlElement)originalXml.SelectSingleNode("/Tests/Test/Sample[@id='544']");
            if (el != null) {
                el.ParentNode.RemoveChild(el);
                originalXml.Save(@"d:\file.xml");
            }
3 голосов
/ 15 июля 2010

Нашел это онлайн с помощью простого поиска:

XmlNode node = document.SelectSingleNode("/Tests/Test/Sample[@id='544']");
node.ParentNode.RemoveChild(t);
document.Save();
2 голосов
/ 15 июля 2010

Я не проверял этот код, но он должен работать.

XmlDocument xDoc = new XmlDocument();
xDoc.Load("file.xml");
xDoc.RemoveChild(xDoc.SelectSingleNode("//Sample[@ID='554']"));
...