[.net]xml讀不到節點
今天在MSDN論壇看到有篇「xml讀不到結點」,直覺想說應該是取得到呀!
XML內容我簡化如下,
<?xml version="1.0" encoding="utf-8" ?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Folder>
<name>TWN_TOWN_1</name>
<Placemark>
<name>10021008</name>
<description></description>
</Placemark>
<Placemark>
<name>10021009</name>
<description></description>
</Placemark>
</Folder></Document></kml>
修改超人衝衝衝附的範例程式改成取所有Placemark節點,果然是取不到任何節點!
Dim doc As New XmlDocument()
doc.Load("f:\test.xml")
Dim nodes As Xml.XmlNodeList = doc.SelectNodes("//Placemark")
MsgBox(nodes.Count)
看起來是很一般的XML檔呀! 為何會取不到節點呢?
再看詳細一點,原來是因為那個XML中多了xmlns的屬性!
於是把那個xmlns="http://www.opengis.net/kml/2.2"刪除掉,再Run程式就可以取到節點了!
知道是因為xmlns的問題,那就可以解這問題了!
所以再把xmlns加回去,然後使用XmlNamespaceManager來加入Namespace,然後在SelectNodes時傳入它! 這樣就能取到節點的資料了!
Dim doc As New XmlDocument()
doc.Load("f:\test.xml")
Dim namespaceManager As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
namespaceManager.AddNamespace("pf", "http://www.opengis.net/kml/2.2")
Dim nodes As Xml.XmlNodeList = doc.SelectNodes("//pf:Placemark", namespaceManager)
MsgBox(nodes.Count)
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^