我在使用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)
答案 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很多,那么肯定会建议花一些时间来至少学习它的基础知识。