使用XPath获取属性
给定一个像这样的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
在书名中),第一个元素是什么?
我怎么能得到lang的价值(lang =在书名中),第一个元素是什么?
用途 :
/*/book[1]/title/@lang
这意味着 :
select作为XML文档顶部元素的第一个book
子元素的子元素的title元素的lang
属性。
为了得到这个属性的string值,使用 :
string(/*/book[1]/title/@lang)
谢谢! 这解决了我在Div内部的一个数据属性的类似问题。
<div id="prop_sample" data-want="data I want">data I do not want</div>
使用这个xpath: //*[@id="prop_sample"]/@data-want
希望这可以帮助别人!
你可以试试下面的xPath模式,
XPathExpression expr = xPath.compile("/bookstore/book/title[@lang='eng']")
你也可以得到它
string(//bookstore/book[1]/title/@lang) string(//bookstore/book[2]/title/@lang)
虽然如果你在JavaScript中使用XMLDOM,你可以编写类似的代码
var n1 = uXmlDoc.selectSingleNode("//bookstore/book[1]/title/@lang");
和n1.text
将给你的价值"eng"
下面是使用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()); } }