Создать узлы по XPath

Подскажите, а есть ли в C# штатный способ по XPath создать всю ветку узлов?

Скажем, на вход я подаю XPath root/node1/node2/node3 и мне будет создана вся это ветка в XDocument.

Или можно только ручками итеративно создавать XElement'ы друг за другом?


Ответы (1 шт):

Автор решения: Yitzhak Khabinsky

Например.

c#

void Main()
{
    string XPath = "root/node1/node2/node3";
    string[] root = { XPath.Split('/').First() };

    XElement xmlTree = new XElement (XPath.Split('/').First());

    foreach (string st in XPath.Split('/').Except(root))
    {
        xmlTree.Add(new XElement(st, "some value"));
    }
}

Результат

<root>
  <node1>some value</node1>
  <node2>some value</node2>
  <node3>some value</node3>
</root>

Или

void Main()
{
    string XPath = "root/node1/node2/node3";
    string[] root = { XPath.Split('/').First() };

    XElement xmlTree = new XElement(XPath.Split('/').First());

    foreach (string st in XPath.Split('/').Except(root))
    {
        xmlTree.DescendantsAndSelf().Last().Add(new XElement(st));
    }
    xmlTree.Dump();
}

Результат

<root>
  <node1>
    <node2>
      <node3 />
    </node2>
  </node1>
</root>
→ Ссылка