Добавить несколько дочерних узлов в XML с помощью xpath

У меня есть xml как ниже

<ProcessInvoice>
  <ApplicationArea>
    <CreationDateTime>2016-06-01 13:15:36</CreationDateTime>
    <ApplicationGroup>BBEX</ApplicationGroup>
    <MessageType>PROCESSINVOICE</MessageType>
  </ApplicationArea>
</ProcessInvoice>

Теперь у меня есть путь и значение, чтобы добавить, но это динамично. Это может быть похоже на следующее

path-/ProcessInvoice/ApplicationArea/UserArea/Sample1 
value-001

path-/ProcessInvoice/ApplicationArea/UserArea/UserAreaLine/Sample1 
value-002

если путь присутствует, тогда я должен добавить значение, иначе измените значение.

Я могу разделить путь и пройтись по нему, чтобы найти, какой узел присутствует и что мне нужно добавить, но я думаю, что может быть более элегантный способ сделать это. Пожалуйста, помогите мне с лучшим подходом для решения этой проблемы?

Редактировать заметку - я предпочитаю XDocument и XElement.

Может быть, я не объяснил должным образом. Мой xml и путь к узлу оба являются динамическими. Там может быть ситуация, когда несколько узлов отсутствуют в моем XML. Теперь проблема в том, что мне нужно определить, какой узел существует в XML и какие узлы мне нужно создать.

Спасибо

1 ответ

Если узел "Sample1" всегда существует, код будет выглядеть так:

    XmlDocument doc = new XmlDocument();
    doc.Load(FILE);
    var userArea = DocumentElement["ProcessInvoice"]["ApplicationArea"]["UserArea"];

    foreach (XmlNode element in userArea.ChildNodes)
    {
        if (element.Name== "Sample1" )
        {
            XmlNode node == element;
            node.InnerText ="001";
        }
        else if (element.Name == "UserAreaLine")
        {
            XmlNode node == element["Sample1"];
            node.InnerText ="002";
        }

    }
Другие вопросы по тегам