Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在节点内使用xpath不会获取值,但使用文档_Java_Xml_Xpath - Fatal编程技术网

Java 在节点内使用xpath不会获取值,但使用文档

Java 在节点内使用xpath不会获取值,但使用文档,java,xml,xpath,Java,Xml,Xpath,我陷入了这样一种情况:我有一个节点列表,需要使用xpath从节点获取值 这是我正在尝试的 <book> <book1> <abc><fm>text</fm></abc> <def></def> <ghi></ghi> </book1> <book2> <abc><fm>text

我陷入了这样一种情况:我有一个节点列表,需要使用
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>
这里返回空字符串,请有人帮我:)


我也尝试了。//fm/text(),但没有用

因为您有不同的节点,即book1、book2、book3等等,所以需要创建disti /book1/abc/fm /book2/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>

文本
文本
文本

您没有结账
tag@tgdavies这就是typpoI在使用内容、XPATH和Java代码时正确返回的“文本”。你能提供生成
bookNode
的代码吗?我在节点间循环,传递节点和表达式,你说的对文档有效,而不是对节点有效
<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>