Как сохранить XML-файл после обращения некоторых дочерних файлов на него
У меня есть XML-файл, и я хочу изменить некоторые узлы, и после этого я хочу сохранить результат. Я использовал XDocumnt и использовал на нем функцию Revese, и он изменился правильно, но после этого я не знаю, как сохранить файл. оригинальный файл, как следующий
<root>
<parent>
<child>
<sec>
<p>
<my-formula>
<test id="H1"></test id="H1">
</my-formula>
<my-formula>
<test id="H2"></test id="H2">
</my-formula>
<my-formula>
<test id="H3"></test id="H3">
</my-formula>
</p>
</sec>
<sec>
<p>
<my-formula>
<test id="H4"></test id="H4">
</my-formula>
<my-formula>
<test id="H5"></test id="H5">
</my-formula>
<my-formula>
<test id="H6"></test id="H6">
</my-formula>
</p>
</sec>
</child>
</parent>
</root>
Мне нужно изменить это следующим образом:
<root>
<parent>
<child>
<sec>
<p>
<my-formula>
<test id="H6"></test id="H6">
</my-formula>
<my-formula>
<test id="H5"></test id="H5">
</my-formula>
<my-formula>
<test id="H4"></test id="H4">
</my-formula>
</p>
</sec>
<sec>
<p>
<my-formula>
<test id="H3"></test id="H3">
</my-formula>
<my-formula>
<test id="H2"></test id="H2">
</my-formula>
<my-formula>
<test id="H1"></test id="H1">
</my-formula>
</p>
</sec>
</child>
</parent>
</root>
После этого я хочу сохранить его в новый файл.
Может кто-нибудь мне помочь?
1 ответ
Решение
Я считаю, что я должен использовать ReplaceNode
функция для замены обращенных узлов, затем сохранить файл, но функция обратного просмотра не инвертирует узлы внутри файла, нет, она просто возвращает новые обратные значения, и я должен заменить их вручную, как показано ниже
var fileDataXDoc = XDocument.Load("filePath");
var elems = fileDataXDoc.Descendants("node_to_be_reversed").Reverse();
int counter = 0;
foreach (var xElement in elems)
{
fileDataXDoc.Descendants("node_to_be_reversed).ElementAt(counter).ReplaceNodes(xElement.Nodes());
counter ++;
}
fileDataXDoc.Save("newReversedFile.xml");