我正在尝试访问此xml(google kml类型)文件中的第二个元素,我遇到的问题是我的代码返回空值,除非我删除了<kml xmlns="http://earth.google.com/kml/2.0">
和相关的关闭来自源文件。这是我正在使用的代码。 (请注意,如果我删除指定的行,这是有效的,所以我正在寻找的是一种处理此文件而不编辑提供的源文件的干净方法。)
XmlDocument doc = new XmlDocument();
doc.Load("2014_q2.xml");
XmlNodeList xnlNodes = doc.SelectNodes("/kml/Document/Folder");
var Node2Use = xnlNodes.Item(1);
这是源文件的顶部:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<open>1</open>
<Folder>
<name>Pts_2014_q3_point Drawing</name>
<Placemark>
<description>HOLTSVILLE</description>
<name>00501</name>
<Style>
<IconStyle>
<color>ffc0c0c0</color>
&#13;
我在var Node2Use = xnlNodes.Item(1);
行休息,所以我可以看到内容和那些我看到我有一个零值我应该有2个文件夹(如上所述,当我删除时我得到2)那个kml标记的行。)
答案 0 :(得分:0)
您需要包含命名空间。像这样:
XmlDocument doc = new XmlDocument();
doc.Load("2014_q2.xml");
XNamespace ns = "http://earth.google.com/kml/2.0";
XmlNodeList xnlNodes = doc.SelectNodes(ns + "/kml/Document/Folder");