2

目的のノードを選択するための XPath 手法を使用して、dom4j を使用して 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で何がうまくいかないのか、誰かが私を導くことができますか?

2 番目の質問は、正社員のみの Emp_Bio ノードを選択する方法です。これは機能しますか?

//Emp_Dir/Emp_Classification/[@type='Permanent']/Emp/Emp_Bio
4

1 に答える 1

4

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

( の削除に注意してください/)

そして、これを使用します://Emp_Dir/Emp_Classification[@type='Permanent']/Emp/Emp_Bio質問の後半に。

于 2011-10-12T04:16:07.190 に答える