我正在使用 dom4j 通过使用 XPath 技术来选择所需节点来读取 XML。考虑一下我的 XML 如下所示:
<Emp_Dir>
<Emp_Classification type ="Permanent" >
<Emp id= "1">
<name>jame</name>
<Emp_Bio>
<age>12</age>
<height>5.4</height>
<weight>78</weight>
</Emp_Bio>
<Emp_Details>
<salary>2000</salary>
<designation>developer</designation>
</Emp_Details>
</Emp>
<Emp id= "2">
<name>jame</name>
<Emp_Bio>
<age>12</age>
<height>5.4</height>
<weight>78</weight>
</Emp_Bio>
<Emp_Details>
<salary>2000</salary>
<designation>developer</designation>
</Emp_Details>
</Emp>
</Emp_Classification>
<Emp_Classification type ="Contract" >
.
.
.
</Emp_Classification>
<Emp_Classification type ="PartTime" >
.
.
.
</Emp_Classification>
</Emp_Dir>
注意:上面的 XML 对你来说可能看起来很难看,但我只是为了理解和保持我的项目的保密性而创建这个虚拟文件
当我指定一些简单的 XPath 表达式时,例如:
//Emp_Classification (or)
/Emp_Dir/Emp_Classification
然后它工作正常但是当我指定一些复杂的表达式时:
/Emp_Dir/Emp_Classification/[@type='Permanent'] (or)
//Emp_Dir/Emp_Classification/[@type='Permanent']
然后它给了我以下错误:
"Invalid XPath expression: /Emp_Dir/Emp_Classification/[@type='Permanent'] Expected one of '.', '..', '@', '*', <QName>"
谁能指导我的 XPath 出了什么问题?
我的第二个问题是,我如何只选择永久雇员的 Emp_Bio 节点,这行得通吗?
//Emp_Dir/Emp_Classification/[@type='Permanent']/Emp/Emp_Bio