Создать узлы по 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>