如何从这个xml结构中获取xpath

时间:2011-04-19 10:59:15

标签: xml xpath

我试图从以下xml结构中获取整数值(它只是文件的一部分)

我需要得到00 / pkw / diesel / pm0 / integer的值,但我不知道如何搜索...

<plist version="1.0">
<dict>
<key>00</key>
<dict>
    <key>pkw</key>
    <dict>
        <key>gas</key>
        <integer>0</integer>
        <key>diesel</key>
        <dict>
            <key>ohne</key>
            <integer>0</integer>
            <key>pm01</key>
            <integer>0</integer>
            <key>pm0</key>
            <integer>0</integer>
            <key>pm1</key>
            <integer>0</integer>
            <key>pm2</key>
            <integer>0</integer>
            <key>pm3</key>
            <integer>0</integer>
            <key>pm4</key>
            <integer>0</integer>
            <key>pm5</key>
            <integer>4</integer>
        </dict>
        <key>otto</key>
        <integer>0</integer>
    </dict>
</dict>

祝你有个主意吗?

此致 浮

编辑:

这是正常的:

/plist/dict/key[.=01]/following-sibling::*[1]/key[.='pkw']/following-sibling::*[1]/key[.='diesel']//following-sibling::*[1]/key[.='pm01']//following-sibling::*[1]

但我不知道这是不是很好的xpath语法; - )

2 个答案:

答案 0 :(得分:0)

一种方法是:

/plist/dict/key[. = '00']/../dict/key[. = 'pkw']/../dict/key[. = 'diesel']/../dict/key[. = 'pm0']/following-sibling::integer[1]

您可以看到结果here。你可以看到它是一个非常愚蠢的表达。我可以更广泛地使用following-sibling::...,但这取决于xml结构的精确程度。

除了您的问题:

/plist/dict/key[.=01]/following-sibling::*[1]/key[.='pkw']/following-sibling::*[1]/key[.='diesel']//following-sibling::*[1]/key[.='pm01']//following-sibling::*[1]

您应该将*替换为代码的名称。

答案 1 :(得分:0)

在“示例xpath”中将(THE_KEY = 00, pwk, diesel, ...)替换为dict[key/text()='THE_KEY']

00/pkw/diesel/pm0/integer

示例结果应为:

dict[key/text()='00']/dict[key/text()='pkw']/