首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用XmlDocument读取GPX文件

用XmlDocument读取GPX文件
EN

Stack Overflow用户
提问于 2017-03-05 21:47:52
回答 1查看 3.2K关注 0票数 3

我正在尝试读取GPX文件(一种用于位置数据的XML文件)。结构是这样的:

代码语言:javascript
复制
<?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文件:

代码语言:javascript
复制
XmlDocument gpxDoc = new XmlDocument();
gpxDoc.Load(gpxfile);

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

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

}

变量' gpxfile‘是gpxfile的路径,它是正确的(经过测试)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-05 23:02:05

您需要使用名称空间。元素trkpt不存在于当前上下文中,仅存在于命名空间http://www.topografix.com/GPX/1/1中。下面是一个如何使用上述名称空间的示例--设x是URI的别名。

代码语言:javascript
复制
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)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42609110

复制
相关文章

相似问题

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