我正在尝试让应用程序执行以下操作:
如果Combobox1文本与.XML中的<Name1></Name1>
相同,则将“他们匹配”输入到文本框中。
这是我正在尝试的代码
Dim DocList As String = "C:\Users\jefhill\Desktop"
Dim Name1 As String
Dim Name2 As String
Name1 = (XElement.Load(DocList + "\parts.xml").<Name1>.Single)
Name2 = (XElement.Load(DocList + "\parts.xml").<Name2>.Single)
If ComboBox1.Text = Name1 Then
DesTextBox.Text = (XElement.Load(DocList + "\parts.xml").<Des1>.Single)
ElseIf ComboBox1.Text = Name2 Then
DesTextBox.Text = (XElement.Load(DocList + "\parts.xml").<Des2>.Single)
'ect
XML文档示例:
<Name1>Words</Name1>
<Name2>More Words</Name2>
编辑:忘记提及错误。
序列不包含元素
答案 0 :(得分:1)
错误
当没有找到匹配的元素时,序列不包含元素
来自调用.Single()
,这意味着XML文档中缺少您要查询的一个或多个元素名称。由于您提供的XML不完整,我无法分辨出哪些可能。这可能是一个简单的错字。
您的代码中还有其他一些问题。我建议使用Option Strict On
来避免其中一些问题。
您应该只加载一次XML文档:
Dim xml As XElement = XElement.Load(DocList + "\parts.xml")
您应该使用.Value
来获取元素的字符串值,因为.Single()
将返回XElement
:
Dim Name1 As String = xml.<Name1>.Single().Value
Dim Name2 As String = xml.<Name2>.Single().Value