Yor*_*ick 6 xml linq vb.net xpath xml-serialization
从这个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>
Run Code Online (Sandbox Code Playgroud)
我如何得到(例如)旁边的10 <Kills>?
我尝试过多次没有成功的事情.我有一个想法是使用这个代码:
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
Run Code Online (Sandbox Code Playgroud)
但是我无法弄清楚如何编辑该片段以使用我现在需要它做的事情.
(以上代码适用于使用它的位置.)
Ste*_*art 10
您还可以使用XPath来读取元素的值:
Dim doc As XmlDocument = New XmlDocument()
doc.Load("C:\members.xml")
Dim kills As String = doc.SelectNode("Tabel/Member[Naam='Ghostbullet93']/Kills").InnerText
Run Code Online (Sandbox Code Playgroud)
但是,如果您打算加载和使用所有数据,那么使用序列化会容易得多.要做到这一点,首先需要创建模仿XML结构的类(为简单起见,我只使用公共字符串字段,但最好使用属性):
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
Run Code Online (Sandbox Code Playgroud)
然后像这样反序列化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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43431 次 |
| 最近记录: |