xml - xpath判断 - xpath实例



使用XPath获取属性 (4)

给定一个像这样的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在书名中),第一个元素是什么?


Answer #1

对于第一个元素,我怎么能得到lang的价值(lang =在书名中)?

使用

/*/book[1]/title/@lang

这意味着

选择作为XML文档顶部元素的第一个book子元素的子元素的title元素的lang属性。

要仅获取此属性的字符串值,请使用标准XPath函数string()

string(/*/book[1]/title/@lang)

Answer #2

以下是使用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());
    }
}

Answer #3

你可以尝试下面的xPath模式,

  XPathExpression expr = xPath.compile("/bookstore/book/title[@lang='eng']")

Answer #4

谢谢! 这解决了我在Div内部的数据属性中遇到的类似问题。

<div id="prop_sample" data-want="data I want">data I do not want</div>

使用这个xpath: //*[@id="prop_sample"]/@data-want

希望这可以帮助别人!





xpath