使用XPath获取属性

旧街凉风 提交于 2020-03-13 19:43:28

给定这样的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)
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!