Как выбрать все узлы в файле xml между двумя тегами, в зависимости от имени атрибута тега? - PullRequest
0 голосов
/ 14 апреля 2020

Я хочу выбрать все узлы между групповыми тегами, где у него есть имя, которое я хочу, но я не уверен, как это сделать. Ниже приведен пример, в котором я хотел бы выбрать каждый узел, в котором группа имеет имя «DefaultSettings».

<group name="DefaultSettings">
    <tag></tag>
    <tag></tag>
    <tag></tag>
    <tag></tag>
    <tag></tag>
    <tag></tag>
</group>

<group name="NewSettings">
    <tag></tag>
    <tag></tag>
    <tag></tag>
    <tag></tag>
    <tag></tag>
    <tag></tag>
</group>

В настоящее время я пытаюсь использовать объект XmlDocument для выбора всех узлов, но я не уверен о том, как заставить Xpath работать должным образом, так как я не хочу выбирать другую группу с именем NewSettings. Любой совет о том, какую формулу Xpath использовать или каким-либо другим способом, будет оценен.

Редактировать: я решил это с помощью комбинации freeformatter.com/xpath-tester.html и просто общего возни. Извините, что я не исследовал это так много, как думал, но XPath довольно запутанный, и теперь я знаю намного больше о том, как его использовать.

1 Ответ

0 голосов
/ 14 апреля 2020

Предполагая, что это ваш XML

<groups>
   <group name="DefaultSettings">
      <tag />
      <tag />
      <tag />
      <tag />
      <tag />
      <tag />
   </group>
   <group name="NewSettings">
      <tag />
      <tag />
      <tag />
      <tag />
      <tag />
      <tag />
   </group>
</groups>

Вы можете попробовать что-то вроде этого:

XmlDocument xml = new XmlDocument();
xml.LoadXml(str);  // suppose that str string contains "<groups>...</groups>"

XmlNodeList xnList = xml.SelectNodes("/groups/group[@name='DefaultSettings']");
foreach (XmlNode xn in xnList)
{
  Console.WriteLine(xn.InnerText);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...