给定像这样的XML结构:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
Run Code Online (Sandbox Code Playgroud)
我怎么能得到的值lang
(这里lang
是eng
在书名),第一个元素?
Dim*_*hev 448
对于第一个元素,我怎样才能获得lang(其中lang = eng in book title)的值?
用途:
/*/book[1]/title/@lang
Run Code Online (Sandbox Code Playgroud)
这意味着:
选择lang
title元素的属性,该属性是book
XML文档顶部元素的第一个子元素的子元素.
要获取此属性的字符串值,请使用标准XPath函数string()
:
string(/*/book[1]/title/@lang)
Run Code Online (Sandbox Code Playgroud)
小智 44
谢谢!这解决了我在Div中使用数据属性时遇到的类似问题.
<div id="prop_sample" data-want="data I want">data I do not want</div>
Run Code Online (Sandbox Code Playgroud)
使用此xpath: //*[@id="prop_sample"]/@data-want
希望这有助于其他人!
小智 7
使用 XPath 提取属性值的标准公式是
elementXPath/@attributeName
Run Code Online (Sandbox Code Playgroud)
所以这是获取第一个属性的 lang 值的 xpath -
//title[text()='Harry Potter']/@lang
Run Code Online (Sandbox Code Playgroud)
PS:永远不建议在 XPath 中使用索引,因为如果再出现一个标题标签,它们可能会发生变化。
您可以尝试以下xPath模式,
XPathExpression expr = xPath.compile("/bookstore/book/title[@lang='eng']")
Run Code Online (Sandbox Code Playgroud)