【问题标题】:dom4j: How to resolve this XPath Error?dom4j:如何解决这个 XPath 错误?
【发布时间】:2011-10-12 04:12:49
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: java xml xpath dom4j


    【解决方案1】:

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

    (注意删除/

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

    【讨论】:

      猜你喜欢
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      相关资源
      最近更新 更多