XML Parse基于属性ID

时间:2014-11-24 20:17:45

标签: xml vb.net visual-studio

我在使用Visual Basic的XML方面很陌生。我想要完成的是根据items节点将数据加载到文本框中。我用静态地址做了。我现在要做的是能够根据名为" ID" 屏幕节点的属性进行更改。

例如,如果屏幕节点的属性ID = 36,我希望aLabel.text等于" Apples"。 我也会在C#中接受答案,我可以做或者。

XML示例

<Screen attribute ="35">
    <A>Chrono Trigger</A>
</Screen>
<Screen attribute ="36">
    <A>Apples</A>
</Screen>

VB.Net代码

 doc.Load(files)
 Static NodeNumber As Integer = 0
 RichTextBox1.Text = (doc.DocumentElement.SelectSingleNode("/Main/Screen").Attributes.ItemOf("ID").InnerText)
 aLabel.Text = (doc.DocumentElement.SelectSingleNode("/Main/Screen/A").InnerText)
 bLabel.Text = (doc.DocumentElement.SelectSingleNode("/Main/Screen/B").InnerText)
 cLabel.Text = (doc.DocumentElement.SelectSingleNode("/Main/Screen/C").InnerText)
 dLabel.Text = (doc.DocumentElement.SelectSingleNode("/Main/Screen/D").InnerText)

1 个答案:

答案 0 :(得分:1)

您可以使用XPath选择适当的Screen元素,例如

Dim screenNode as XmlNode = doc.SelectSingleNode("/Main/Screen[@attribute = '35']")

带方括号([@attribute = '35'])的部分是一种条件 - 有点像If语句。 @符号用于指定您指定属性的名称而不是元素。

然后你可以读出这样的子元素:

aLabel.Text = screenNode.SelectSingleNode("A").InnerText
bLabel.Text = screenNode.SelectSingleNode("B").InnerText
cLabel.Text = screenNode.SelectSingleNode("C").InnerText
dLabel.Text = screenNode.SelectSingleNode("D").InnerText

XPath是一种非常强大的查询语言,具有许多其他功能。如果您打算使用XML很多,那么肯定会建议花一些时间来至少学习它的基础知识。

相关问题