2013-07-11 51 views
1

我想只讀取這個XML文件中的值,並且我找不到只能正確讀取此值的代碼。從vb.net的XML文件讀取<key>

的XML文件是這樣的:

<ListBucketResult> 
<Name>Files</Name> 
<Prefix/> 
<Marker/> 
<MaxKeys>1000</MaxKeys> 
<IsTruncated>false</IsTruncated> 
<Contents> 
<Key>tmp.png</Key> 
<LastModified>2013-04-30T09:25:54.000Z</LastModified> 
<ETag>"49e6d7e2967d1a471341335c49f46c6c"</ETag> 
<Size>561</Size> 
<StorageClass>STANDARD</StorageClass> 
</Contents> 
<Contents> 
<Key>2013.png</Key> 
<LastModified>2013-05-21T12:26:15.000Z</LastModified> 
<ETag>"1eea6fda0ca03698efba7b045b5375f9"</ETag> 
<Size>3665</Size> 
<StorageClass>STANDARD</StorageClass></Contents> 
</ListBucketResult> 

的代碼我嘗試使用方法是:

Dim XMLFile As String = tmpdir & "tmp.xml" 
    Dim xmlDoc As New XmlDocument 

    xmlDoc.Load(XMLFile) 'opens XML file 

    Dim node As XmlNode = xmlDoc.SelectSingleNode("/ListBucketResult/Contents/Key") 

    For Each inst As XmlNode In node.ChildNodes 

     For Each sProperty As XmlNode In inst.ChildNodes 



      If sProperty.Name = "key" Then 

       MessageBox.Show(sProperty.Value) 
      End If 

     Next 
    Next 

的代碼沒有返回鍵的內容。任何人都可以告訴我如何獲得密鑰的文本內容?

回答

0

我想你可能會浪費一些處理器週期;您應該只需要:

Dim nodeList As XmlNodeList = xmlDoc.SelectNodes("//Contents/Key") 
For Each inst As XmlNode In nodeList 
    MessageBox.Show(inst.InnerText) 
Next 

因爲您已經在正確的XML節點。

+0

謝謝。這工作得很好,我發現我遇到的問題是下載文件有一個xml命名空間。我添加了這個代碼來刪除它,並使用你的代碼一切都很好。 xmlDoc.DocumentElement.RemoveAttribute(「xmlns」,「URL」) –

0

我想是因爲您指定的路徑節點,你應該只需要像

Dim node As XmlNode = xmlDoc.SelectSingleNode("/ListBucketResult/Contents/Key") 

    For Each inst As XmlNode In node.ChildNodes 
     MessageBox.Show(inst.InnerText) 
    Next 
0

這應該做到這一點,利用SelectNodes在XML文件中返回每個鍵(而你的代碼只將返回一個SelectSingleNode

Dim XMLFile As String = tmpdir & "text.xml" 
    Dim xmlDoc As New XmlDocument 

    xmlDoc.Load(XMLFile) 'opens XML file 

    Dim keyNodes = xmlDoc.SelectNodes("/ListBucketResult/Contents/Key") 
    For Each singleKeyNode As XmlNode In keyNodes 
     Debug.WriteLine(singleKeyNode.InnerText) 
    Next 

測試輸出:

tmp.png 
2013.png