java - dom4j:如何解决此 XPath 错误?

标签 java xml xpath dom4j

我正在使用 dom4j 读取 XML,并使用 XPath 技术来选择所需的节点。考虑一下我的 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

最佳答案

使用://Emp_Dir/Emp_Classification[@type='Permanent']

(注意删除/)

然后使用这个://Emp_Dir/Emp_Classification[@type='Permanent']/Emp/Emp_Bio来解决问题的后半部分。

关于java - dom4j:如何解决此 XPath 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7735186/

相关文章:

ios - 来自 iOS 的 XPath 调用无法正常工作

python lxml - 选择不带双斜杠的xpath

java - 如何在 ANTLR4 中生成 AST?

java - 如何测试 SNMP4J 代理

java - AttributeOverride 将空值设置为未映射的字段

java - 使用 BLOB 对象将图像插入 SQL 表时出现异常

android - XML pre-honeycomb 中的旋转(非动画) View ?

java - XML解析问题

java - 具有不同命名空间的 XML 可以深入了解所需的值

c# - XPath:根据另一个节点选择一个节点?