在节点内部使用xpath没有获取值,但确实使用了文档

时间:2018-05-04 12:12:04

标签: java xml xpath

我遇到的情况是我有一个节点列表,我需要使用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 :(得分:0)

由于你有不同的节点,即book1,book2,book3等,你需要创建disti     / BOOK1 / ABC / FM     /第二册/ ABC / FM     / BOOK3 / ABC / FM

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>