[英]Issue reading <key> from XML file in vb.net
我正在尝试仅读取此XML文件中的值,并且我无法找出正确读取此值的代码。
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
该代码未返回Key的内容。 有人可以告诉我如何获取Key的文本内容吗?
我认为,因为您已经指定了节点的路径,所以只需要类似
Dim node As XmlNode = xmlDoc.SelectSingleNode("/ListBucketResult/Contents/Key")
For Each inst As XmlNode In node.ChildNodes
MessageBox.Show(inst.InnerText)
Next
我认为您可能会浪费一些处理器周期。 您只需要:
Dim nodeList As XmlNodeList = xmlDoc.SelectNodes("//Contents/Key")
For Each inst As XmlNode In nodeList
MessageBox.Show(inst.InnerText)
Next
因为您已经在正确的XML节点上。
这应该做到这一点,并通过使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.