Как сохранить 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");
Другие вопросы по тегам