Sve*_*ijs 4 c# xml asp.net xml-parsing
我正在尝试读取 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>
Run Code Online (Sandbox Code Playgroud)
我过去读过一百多个 XML 文件,但这个不起作用。我正在以这种方式读取 GPX 文件:
XmlDocument gpxDoc = new XmlDocument();
gpxDoc.Load(gpxfile);
XmlNodeList nl = gpxDoc.SelectNodes("trkpt");
foreach (XmlNode xnode in nl)
{
string name = xnode.Name;
}
Run Code Online (Sandbox Code Playgroud)
变量“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);
Run Code Online (Sandbox Code Playgroud)
x请注意,我们现在选择命名空间中的节点(例如//x:trkpt,而不是//trkpt)。
| 归档时间: |
|
| 查看次数: |
4141 次 |
| 最近记录: |