簡體   English   中英

使用XmlDocument讀取GPX文件

[英]Read GPX file with XmlDocument

我正在嘗試讀取GPX文件(一種用於位置數據的XML文件)。 結構如下:

<?xml version="1.0"?>
<gpx creator="GPX-service" version="1.1" 
xmlns="http://www.topografix.com/GPX/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">
<trk>
<name>Route</name>
<trkseg>
<trkpt lat="51.966738" lon="6.501578">
</trkpt>
<trkpt lat="51.966689" lon="6.501456">
</trkpt>
</trkseg>
</trk>
</gpx>

過去,我已經讀了一百多個XML文件,但是這個文件不起作用。 我正在以這種方式讀取GPX文件:

XmlDocument gpxDoc = new XmlDocument();
gpxDoc.Load(gpxfile);

XmlNodeList nl = gpxDoc.SelectNodes("trkpt");

foreach (XmlNode xnode in nl)
{
    string name = xnode.Name;

}

變量“ gpxfile”是gpxfile的路徑,該路徑是正確的(已測試)。

您需要使用名稱空間。 trkpt元素在當前上下文中不存在,僅在名稱空間http://www.topografix.com/GPX/1/1 這是使用命名空間的示例-讓x為URI的別名。

XmlNamespaceManager nsmgr = new XmlNamespaceManager(gpxDoc.NameTable);
nsmgr.AddNamespace("x", "http://www.topografix.com/GPX/1/1");            
XmlNodeList nl = gpxDoc.SelectNodes("//x:trkpt", nsmgr);

注意,我們現在在x名稱空間中選擇節點(例如//x:trkpt而不是//trkpt )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM