【发布时间】:2014-04-06 03:50:30
【问题描述】:
我目前有一个来自 Garmin Sat Nav 的 XML 文件,我想使用 Java 提取数据。但是,我找不到提取 TRACK 纬度和经度的方法,因为在单个节点中有多个具有相同名称的属性。我想过使用类似“getAttribute(“lat”)”的东西,但显然这只会返回第一个轨道段的第一个纬度:-(
我还没有开始这个项目,因为从 XML 文件中提取纬度和经度是至关重要的。
任何帮助将不胜感激:-)
XML 文件
<gpx xmlns="http://www.topografix.com/GPX/1/1"
xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3"
xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" creator="Oregon
400t" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1
http://www.topografix.com/GPX/1/1/gpx.xsd
http://www.garmin.com/xmlschemas/GpxExtensions/v3
http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd
http://www.garmin.com/xmlschemas/TrackPointExtension/v1
http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd">
<metadata>
<link href="http://www.garmin.com">
<text>Garmin International</text>
</link>
<time>2009-10-17T22:58:43Z</time>
</metadata>
<trk>
<name>Example GPX Document</name>
<trkseg>
<trkpt lat="47.644548" lon="-122.326897">
<ele>4.46</ele>
<time>2009-10-17T18:37:26Z</time>
</trkpt>
<trkpt lat="47.644548" lon="-122.326897">
<ele>4.94</ele>
<time>2009-10-17T18:37:31Z</time>
</trkpt>
<trkpt lat="47.644548" lon="-122.326897">
<ele>6.87</ele>
<time>2009-10-17T18:37:34Z</time>
</trkpt>
</trkseg>
您好,我尝试了以下代码,但由于某种原因,我正在检索一个值,我什至无法在我的 XML 文件中找到它!!!
package Test;
import java.io.File;
import javax.xml.parsers.*;
import javax.xml.xpath.*;
import org.w3c.dom.Document;
public class ReadXMLFile2 {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(new File("J:/Desktop/Current.gpx"));
XPath xpath = XPathFactory.newInstance().newXPath();
System.out.println(xpath.evaluate("//trkseg/trkpt/@lat", document));
}
}
【问题讨论】: