给定这样的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>
我如何获取第一个元素lang
的值(其中lang
是书名中的eng
)?
#1楼
谢谢! 这解决了我在Div中使用data属性遇到的类似问题。
<div id="prop_sample" data-want="data I want">data I do not want</div>
使用此xpath: //*[@id="prop_sample"]/@data-want
希望这对别人有帮助!
#2楼
您可以尝试以下xPath模式,
XPathExpression expr = xPath.compile("/bookstore/book/title[@lang='eng']")
#3楼
您也可以通过
string(//bookstore/book[1]/title/@lang)
string(//bookstore/book[2]/title/@lang)
尽管如果您将XMLDOM与JavaScript结合使用,则可以编写如下代码
var n1 = uXmlDoc.selectSingleNode("//bookstore/book[1]/title/@lang");
并且n1.text
将为您提供值"eng"
#4楼
这是使用XPath和VTD-XML获取“ lang”属性值的代码段。
import com.ximpleware.*;
public class getAttrVal {
public static void main(String s[]) throws VTDException{
VTDGen vg = new VTDGen();
if (!vg.parseFile("input.xml", false)){
return ;
}
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath("/bookstore/book/title/@lang");
System.out.println(" lang's value is ===>"+ap.evalXPathToString());
}
}
#5楼
如何获取第一个元素的lang值(书名中lang = eng)?
用途 :
/*/book[1]/title/@lang
这意味着 :
选择title元素的lang
属性,该属性是XML文档top元素的第一book
子元素。
要仅获取此属性的字符串值,请使用标准XPath函数string()
:
string(/*/book[1]/title/@lang)
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3193566