首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Java中的xpath从特定属性中选择所有属性值

如何使用Java中的xpath从特定属性中选择所有属性值
EN

Stack Overflow用户
提问于 2014-03-05 12:25:14
回答 2查看 483关注 0票数 0

我有下面的包含GPS协调的XML文件,我只是想知道如何使用Java中的Xpath提取轨道纬度和经度。到目前为止我试过:

代码语言:javascript
运行
复制
System.out.println(xpath.evaluate("/gpx/trk/trkseg/trkpt/@lat", doc));

但这只会检索第一个值?请有人告诉我如何一次检索所有的值。

事先非常感谢。

代码语言:javascript
运行
复制
<gpx xmlns="http://www.topografix.com/GPX/1/1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" creator="MapSource 6.11.3"
version="1.1" xsi:schemaLocation="http://www.topografix.com/GPX/1/1
http://www.topografix.com/GPX/1/1/gpx.xsd">
<metadata>...</metadata>
<wpt lat="40.653792" lon="-111.922379">...</wpt>
<wpt lat="40.658111" lon="-111.919564">...</wpt>
<wpt lat="40.659546" lon="-111.917527">...</wpt>
<wpt lat="40.595857" lon="-111.910294">...</wpt>
<wpt lat="40.657349" lon="-111.918721">...</wpt>
<trk>
<name>FromParking</name>
<extensions>...</extensions>
<trkseg>
<trkpt lat="40.653782" lon="-111.922365">
    <ele>1224.376221</ele>
    <time>2009-11-19T20:00:11Z</time>
</trkpt>
<trkpt lat="40.653786" lon="-111.922350">
    <ele>1223.895508</ele>
    <time>2009-11-19T20:00:13Z</time>
</trkpt>
<trkpt lat="40.654449" lon="-111.922073">
    <ele>1224.376221</ele>
    <time>2009-11-19T20:00:22Z</time>
</trkpt>
<trkpt lat="40.654509" lon="-111.921919">
    <ele>1224.376221</ele>
    <time>2009-11-19T20:00:25Z</time>
</trkpt>
<trkpt lat="40.654618" lon="-111.921700">
    <ele>1224.856934</ele>
    <time>2009-11-19T20:00:35Z</time>
</trkpt>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-05 12:46:41

除了我在我对你上一个问题的回答中描述的命名空间问题之外,这里的基本问题是没有QName returnType参数的XPath.evaluate方法将XPath表达式计算为字符串,而XPath规则指出,包含多个节点的节点集的字符串值是定义为 --按文档顺序排列的第一个节点的字符串值。

如果要计算返回一组节点的XPath表达式,则必须使用接受QName的XPath方法之一,将XPathConstants.NODESET作为请求的返回类型,并将从evaluate返回的结果转换为一个org.w3c.dom.NodeList,然后可以对其进行迭代。

票数 1
EN

Stack Overflow用户

发布于 2014-03-05 12:33:15

尝试如下:要检索所有trkpt属性,请执行以下操作:

代码语言:javascript
运行
复制
String trkpt ="/gpx/trk/trkseg/trkpt";
NodeList nodeList= (NodeList) xpath.compile(trkpt).evaluate(doc, XPathConstants.NODESET);

for(int i=0; i<nodeList.getLength(); i++){
   Node node = nodeList.item(i);
   NamedNodeMap attributesMap = node.getAttributes();

   for (int j = 0; j< attributesMap.getLength(); j++) {            
     Node attributeNode = attributesMap.item(j);       
     String attributeName = attributeNode.getNodeName();        
     String attributeValue = attributeNode.getNodeValue();

     System.out.println(attributeName + "=" + attributeValue);
   }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22197722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档