2014-10-28 50 views
0

我想要訪問此xml(google kml類型)的文件中的第二個元素,並且我遇到的問題是我的代碼的返回空值,除非刪除掉<kml xmlns="http://earth.google.com/kml/2.0">和相關的源文件關閉。這是我正在使用的代碼。 (請注意這一點,如果我刪除指定的行所以我正在尋找的是處理這個文件,而無需編輯提供的源文件乾淨的方式工作。)在C#中加載xml的問題包含谷歌kml

 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"> 
 
\t <Document> 
 
\t \t <open>1</open> 
 
\t \t <Folder> 
 
\t \t \t <name>Pts_2014_q3_point Drawing</name> 
 
\t \t \t <Placemark> 
 
\t \t \t \t <description>HOLTSVILLE</description> 
 
\t \t \t \t <name>00501</name> 
 
\t \t \t \t <Style> 
 
\t \t \t \t \t <IconStyle> 
 
\t \t \t \t \t \t <color>ffc0c0c0</color>

我對var Node2Use = xnlNodes.Item(1);線路斷路,所以我能看到的內容,多數民衆贊成在我看到,我有一個零值我應該有2的文件夾(如提到我得到2時,我刪除了kml標記的行。)

回答

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"); 
+0

我努力的工作,在片段,但我遇到了錯誤,它的arent工作,我改變了它稍微: XmlDocument的DOC =新的XmlDocument(); doc.Load(「2014_q2.xml」); // XmlNode FolderListNode = doc.SelectSingleNode(「/ Document/Folder」); var nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace(「somename」,「http://earth.google.com/kml/2.0」); var xnlNodes = doc.SelectNodes(「// somename:/ Document/Folder」); var Node2Use = xnlNodes.Item(1); – 2014-10-29 12:14:57