XPath для поиска вложенных значений - PullRequest
0 голосов
/ 04 марта 2009

У меня есть какой-то XML, у меня проблемы с обработкой с XPath. Я не могу получить значения, которые я ищу. XML структурирован так:

<Group>
   <Menu>
      <Name>Top Menu</Name>
      <Document>
         <DocName>Readme.txt</DocName>
      </Document>
      <Menu>
         <Name>Sub Menu</Name>
         <Document>
            <DocName>Manual.pdf</DocName>
         </Document>
         <Document>
            <DocName>UserGuide.pdf</DocName>
         </Document>
      </Menu>
   </Menu>
</Group>

Учитывая имя меню, я хочу вернуть список DocumentNodes в меню. Например, учитывая «Подменю», я хотел бы вернуть два узла документа для Manual.pdf и UserGuide.pdf.

В настоящее время я извлекаю эту информацию, используя код, который проходит через дочерние элементы, но я бы предпочел просто подтянуть ее напрямую, используя XPath, но мои навыки в этом слабы.

(И прежде чем вы спросите, я не могу реструктурировать XML. Он предоставлен мне таким образом.)

Есть мысли?

Ответы [ 2 ]

9 голосов
/ 04 марта 2009

Вот XPath, который будет делать то, что вы хотите:

//Menu[Name='Sub Menu']/Document

0 голосов
/ 04 марта 2009

/<Menu>[\w\n]*<Name>Sub Menu</Name>[\w\n]*<Document>[\w\n]*(<DocName>([a-ZA-Z0-9\.]+)</DocName>[\w\n]*)*</Menu>/

Скорее всего, сработает (с небольшой настройкой, это немного грубо!), Но я не думаю, что Regex - это то, что нужно Я бы лично использовал XPath или DOM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...