2017-05-19 227 views
0

好吧,這是推動我堅果,我有,它表示有一個佈局的呼叫詳細記錄和注意它使用一個名稱空間解析與命名空間XML文件

<File> 
    <FileHeader> 
    </FileHeader> 
    <CDRs> 
    <Call> 
    </Call> 
    <Call> 
    </Call> 
    </Cdrs> 
    <FileFooter> 
    </FileFooter> 
</File> 

我有一個XML文件沒有問題加載文件,但是當我嘗試

Dim thisNode As XmlNode = xmldoc.SelectSingleNode("meta:File/FileHeader", nsmgr)

我總是什麼也得不到。但是,如果使用

xmlnodes2 = xmldoc.GetElementsByTagName("FileHeader")

我可以訪問我的節點裏面就好了這樣

xmlHeader = xmlnodes2(0) 
Dim seqnum As String = "" 
Dim EquipmentType As String = xmlHeader.SelectSingleNode("meta:EquipmentType", nsmgr).InnerText 
Dim EquipmentId As String = xmlHeader.SelectSingleNode("meta:EquipmentId", nsmgr).InnerText 
Dim CreateTime As String = xmlHeader.SelectSingleNode("meta:CreateTime", nsmgr).InnerText 

Debug.WriteLine("---------------------Debug File Header----------------------") 
Debug.WriteLine(seqnum & " - " & EquipmentType & " - " & EquipmentId & " - " & CreateTime) 
Debug.WriteLine(xmlHeader.OuterXml) 

這裏是我的XML文件的開始看起來像,所以我想知道我失去了什麼這裏 ?

`<?xml version="1.0" encoding="UTF-8"?> 
<File xmlns="http://www.metaswitch.com/cfs/billing/V1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" compatibility="2"> 
<FileHeader seqnum="23997"> 
<EquipmentType>Metaswitch CFS</EquipmentType> 
<EquipmentId></EquipmentId> 
<CreateTime>1491092100003</CreateTime> 
</FileHeader> 
<CDRs>.....` 
+2

我強烈建議使用LINQ到XML。 (我也建議在問題中加入vb.net標籤...) –

回答

0

我猜問題是,我不明白我需要指定在每個級別的命名空間前綴,以便使這項工作,我不得不使用

Dim thisNode As XmlNode = xmldoc.SelectSingleNode("meta:File/meta:FileHeader", nsmgr)