Использование xpath внутри узла не получает значение, но использует документ - PullRequest
0 голосов
/ 04 мая 2018

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

Вот что я пытаюсь ...

<book>

  <book1>
     <abc><fm>text</fm></abc>
     <def></def>
     <ghi></ghi>
  </book1>
  <book2>
     <abc><fm>text</fm></abc>
     <def></def>
     <ghi></ghi>
   </book2>
   <bookN>
     <abc><fm>text</fm></abc>
     <def></def>
     <ghi></ghi>
   </bookN>
</book>

Итак, я получаю список узлов из документа и, используя узел, оцениваю XPATH

String nodeValue = (String) xPathFac
                                .compile("//fm/text()")
                                .evaluate(bookNode, XPathConstants.STRING);

Возвращает мне пустую строку здесь, кто-то, помогите мне здесь, пожалуйста:)

Я тоже пытался .// fm / text (), но безрезультатно

1 Ответ

0 голосов
/ 04 мая 2018

Так как у вас есть отдельные узлы, т.е. book1, book2, book3 и т. Д., Вам нужно создать / Книга1 / ABC / FM / Book2 / ABC / FM / Book3 / а / фм

XPath поддерживает регулярные выражения. Надеюсь, это поможет.

/[substring(name(), 4) = 'book']/abc/fm

В идеале вы должны структурировать свой XML примерно так:

<books>
  <book>
     <abc><fm>text</fm></abc>
     <def></def>
     <ghi></ghi>
  </book>
  <book>
     <abc><fm>text</fm></abc>
     <def></def>
     <ghi></ghi>
   </book>
   <book>
      <abc><fm>text</fm></abc>
      <def></def>
      <ghi></ghi>
   </book>
</books>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...