java - 如何检索属性的值

标签 java dom xpath sax

对于下面发布的XML,我想获取对应于lat = 53.0319947的id值。

为了实现这一点,我编写了以下代码。不幸的是我没有得到任何结果。请告诉我如何解决:

String expr0 = "//node[@lat=53.0319947]/id";
    xPath.compile(expr0);
    String s = (String) xPath.evaluate(expr0, document, XPathConstants.STRING);
    System.out.println(s);

xml:

<?xml version='1.0' encoding='utf-8' ?>
<osm>
<node id="25779111" lat="53.0334062" lon="8.8461545"/>  
<node id="25779112" lat="53.0338904" lon="8.846314"/>   
<node id="25779119" lat="53.0337395" lon="8.8489255"/>  
<node id="25779121" lat="53.0338904" lon="8.85117"/>    
<node id="25779122" lat="53.0335748" lon="8.8511796"/>  
<node id="25779124" lat="53.0348595" lon="8.8514167"/>  
<node id="25779125" lat="53.0325729" lon="8.8511503"/>  
<node id="25779126" lat="53.0319947" lon="8.848581"/>
<node id="25779130" lat="53.0331149" lon="8.8469982"/>  
<node id="25779131" lat="53.0302414" lon="8.8489081"/>
<node id="25779132" lat="53.0302971" lon="8.8491894"/>  
<node id="25779168" lat="53.0314824" lon="8.8497289"/>
<node id="25779170" lat="53.0328814" lon="8.8423081"/>
<tag k="maxspeed" v="30"/>  
<tag k="maxspeed:zone" v="yes"/>
</osm>

最佳答案

由于 id 也是一个属性,因此您应该使用 @

String expr0 = "//node[@lat=53.0319947]/@id";

对于 future :

//node/something - You get all the something elements in a node element
//node/@something - You get all the something node's attribute
//node[@lat=53.0319947]/@id" you get all node's id attribute where lat attribute is 53.0319947

关于java - 如何检索属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31339111/

相关文章:

c# - 如何使用 C# 使用 XPath 返回元素值?

c# - xpath 选择具有最后一个子值的元素

java - 运算符重载

xml - 带着4个TD child 获得所有TR

java - 从静态方法引用获取类名

javascript - 使用 RichFaces 4 从 JavaScript 获取 DOM 元素

javascript - 如何阻止滚动事件重复发生?

javascript - 在客户端 JavaScript 中,是否可以捕获事件并在稍后阶段触发它?

java - 在 AWS ec2 实例 (ubuntu) 上运行 JMeter 测试

java - mapstruct - 列表<字符串> 到列表<对象>