我有以下包含 GPS 坐标的 XML 文件,我只是想知道如何使用 Java 中的 Xpath 提取轨迹纬度和经度。到目前为止我尝试过:
System.out.println(xpath.evaluate("/gpx/trk/trkseg/trkpt/@lat", doc));
但这只检索第一个值?请有人告诉我如何一次性检索所有值。
提前非常感谢。
<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>
最佳答案
除了我在 my answer to your previous question 中描述的命名空间问题之外,这里的根本问题是 XPath.evaluate
方法没有QName returnType
参数会将 XPath 表达式计算为字符串/em>,XPath 规则规定包含多个节点的节点集的字符串值为 defined to be按文档顺序排列的集合中第一个节点的字符串值。
如果要计算返回一组节点的 XPath 表达式,则必须使用采用 QName 的 XPath 方法之一,传递 XPathConstants.NODESET
作为请求的返回类型,然后强制转换结果从 evaluate
返回到 org.w3c.dom.NodeList
,然后您可以对其进行迭代。
关于java - 如何在 Java 中使用 xpath 从特定属性中选择所有属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22197722/