[英]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.