Java 为什么我的XPath没有选择任何内容?

Java 为什么我的XPath没有选择任何内容?,java,xml,xpath,xml-parsing,Java,Xml,Xpath,Xml Parsing,我的XML文件 <classifications> <classification sequence="1"> <classification-scheme office="" scheme="CS" /> <section>G</section> <class>01</class> <subclass>R</subclass> <main

我的XML文件

<classifications>
  <classification sequence="1">
    <classification-scheme office="" scheme="CS" />
    <section>G</section>
    <class>01</class>
    <subclass>R</subclass>
    <main-group>33</main-group>
    <subgroup>365</subgroup>
    <classification-value>I</classification-value>
  </classification>
  <classification sequence="2">
    <classification-scheme office="" scheme="CS" />
    <section>G</section>
    <class>01</class>
    <subclass>R</subclass>
    <main-group>33</main-group>
    <subgroup>3415</subgroup>
    <classification-value>A</classification-value>
  </classification>
  <classification sequence="1">
    <classification-scheme office="US" scheme="UC" />
    <classification-symbol>324/300</classification-symbol>
  </classification>
  <classification sequence="2">
    <classification-scheme office="US" scheme="UC" />
    <classification-symbol>324/307</classification-symbol>
  </classification>          
</classifications>
但我得到的结果集是空的

System.out.println(usClassification.getLength()); //its becomes zero

分类符号
不是
分类方案
的子项-它们是同级。使用axis从“方案”转换为“符号”:

这个XPath(写在两行上以简化可读性)

将选择
分类
元素的
分类符号
文本,其
分类方案
属性值等于
US

324/300
324/307

根据要求。

这是一种同样有效的替代方法(+1)。尽量避免以这种方式滥用“/”。这是一种懒惰的习惯,如果在同一路径上执行四次,可能会严重影响性能,尤其是在源文档很大的情况下。是的,特别是因为
/
(选择子对象)和
/
(选择直接子对象)之间的功能差异与XML无关。
//classifications/classification/classification-scheme[@office=\"US\"]/following-sibling::classification-symbol/text()
/classifications/classification[classification-scheme/@office='US']
                /classification-symbol/text()
324/300
324/307