从这个 XML 代码:
<?xml version="1.0" encoding="utf-8"?>
<Tabel>
<Member>
<Naam>Cruciatum</Naam>
<Kills>1000</Kills>
<Deaths>10</Deaths>
<KD>100</KD>
</Member>
<Member>
<Naam>Ghostbullet93</Naam>
<Kills>10</Kills>
<Deaths>1</Deaths>
<KD>10</KD>
</Member>
</Tabel>
如何获得(例如)<Kills>
旁边的 10 ?
我试过很多东西都没有成功。 我的想法之一是使用这段代码:
Dim doc = XDocument.Load("C:\members.xml")
Dim members = From m In doc.Element("Tabel").Elements("Member")
Select naam = m.Element("Naam").Value
For Each member In members
lstmembers.Items.Add(member)
Next
但我不知道如何编辑该片段以处理我现在需要它做的事情。
(上面的代码在使用它的地方完美地工作。)
最佳答案
您还可以使用 XPath 读取元素的值:
Dim doc As XmlDocument = New XmlDocument()
doc.Load("C:\members.xml")
Dim kills As String = doc.SelectNode("Tabel/Member[Naam='Ghostbullet93']/Kills").InnerText
但是,如果您打算加载和使用所有数据,那么使用序列化会容易得多。为此,您首先需要创建模仿 XML 结构的类(为简单起见,我将只使用公共(public)字符串字段,但最好使用属性):
Public Class Member
Public Naam As String
Public Kills As Integer
Public Deaths As Integer
Public KD As Integer
End Class
Public Class Tabel
<XmlElement("Member")> _
Public Members As List(Of Member)
End Class
然后像这样反序列化 XML:
Dim serializer As XmlSerializer = New XmlSerializer(GetType(Tabel))
Dim tabel As Tabel = CType(serializer.Deserialize(File.OpenRead("C:\members.xml")), Tabel)
For Each member As Member in tabel
Dim kills As Integer = member.Kills
Next
关于xml - 如何从 XML 文件中的特定节点获取值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10725820/