需要根据其子节点属性值提取xml文件的整个节点
这是我的xml:需要根据其子节点属性值提取xml文件的整个节点,xml,vb.net,Xml,Vb.net,这是我的xml: <?xml version="1.0" encoding="utf-8"?> <Tabel> <Members> <Member> <Naam>Cruciatum</Naam> <Kills>1000</Kills> <Deaths>10</Deaths> <KD>100</KD> </Me
<?xml version="1.0" encoding="utf-8"?>
<Tabel>
<Members>
<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>
</Members>
</Tabel>
十字韧带
1000
10
100
鬼弹头93
10
1.
10
我的问题是,我想提取KD=10的整个成员节点。请帮助我如何进行提取。
我使用vb.net作为编程语言您可以使用Linq to XML和
XDocument
类:
Dim xml = XDocument.Load("myFilePath")
' or xml = XDocument.Parse("<Tabel> (...) </Tabel>") '
Dim myMember = xml.Root
.Element("Members")
.Elements("Member")
.First(Function(m) CInt(m.Element("KD")) = 10)
Dim xml=XDocument.Load(“myFilePath”)
'或xml=XDocument.Parse(“…”)
Dim myMember=xml.Root
.要素(“成员”)
.要素(“成员”)
.第一(功能(m)CInt(m.Element(“KD”))=10)
之后,
myMember
将是一个与XML中的Member
元素相对应的XElement
类实例。如果您真的不想使用LINQ,那么您需要学习XPath
Sub Main()
'This method uses the Xml DOM in the System.Xml namespace with XPath
Dim xmlDoc = New XmlDocument()
xmlDoc.Load("c:\test\test.xml")
Dim membersNode As XmlNode = xmlDoc.DocumentElement.SelectSingleNode("/Tabel/Members")
If membersNode IsNot Nothing Then
Dim memberWithKDof10 As XmlNode = membersNode.SelectSingleNode("Member[KD = '10']")
If memberWithKDof10 IsNot Nothing Then
Console.WriteLine("Name of player with KD of 10 is {0}", memberWithKDof10.SelectSingleNode("Naam").InnerText)
Else
Console.WriteLine("Player not found!")
End If
End If
'This method uses the XDocument classes found in the System.Xml.Linq namespace
Dim xDoc As XDocument = XDocument.Load("c:\test\test.xml", LoadOptions.None)
Dim membersElement As XElement = xDoc.Root.Element("Members")
If membersElement IsNot Nothing Then
Dim memberWithKDof10 As XElement = membersElement.Descendants("Member").FirstOrDefault(Function(e) e.Element("KD").Value = "10")
If memberWithKDof10 IsNot Nothing Then
Console.WriteLine("Name of player with KD of 10 is {0}", memberWithKDof10.Element("Naam").Value)
Else
Console.WriteLine("Player not found!")
End If
End If
Console.WriteLine()
Console.WriteLine("Press ENTER to exit...")
Console.ReadLine()
End Sub
亲爱的Marcin但我不熟悉linq你能给我举个vb.net或C的例子吗?那就是vb.net,不是吗?!Marcin你能给我一个概括的例子吗?例如,如果我在member中嵌套了其他标记,而这些嵌套的标记有子节点,其属性为kd。你应该在google上搜索“linq to xml教程”。那里有很多!也许我可以,但我不会。为什么?因为Linq到XML似乎是最好的方式,这就是为什么我的答案看起来是这样的。