为什么XPATH(Java7)选择了太多的节点?

为什么XPATH(Java7)选择了太多的节点?,java,xpath,plist,Java,Xpath,Plist,我有一个相当简单的plistxml。看起来是这样的: <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>cast</key> <array> <dict> <ke

我有一个相当简单的plistxml。看起来是这样的:

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>cast</key>
<array>
    <dict>
        <key>name</key>
        <string>Michael Boatman</string>
    </dict>
    <dict>
        <key>name</key>
        <string>Dillon Casey</string>
    </dict>
</array>
<key>directors</key>
<array>
    <dict>
        <key>name</key>
        <string>Jace Alexander</string>
    </dict>
</array>
</dict>
</plist>
"/plist/dict[key='directors']/array/dict/string/text()"
此表达式获取所有三条记录。为什么会这样?我尝试了许多更复杂的表达式(比如dict/key[name()='director']/../),但结果总是一样的。
当我查询“directors”或“cast”时,它获取三条记录,当我查询另一个字符串时,它获取零条记录。

顶级
dict
元素包含一个子元素
key
,其值
directors
。因此,XPath表达式合法地选择了它以及它的所有三个子数组

您应该选择

/plist/dict/key[text()='directors']/following-sibling::array[1]

我怀疑这是我的一些基本误解。非常感谢!