将文本与XML值进行比较

时间:2015-07-24 19:22:27

标签: vb.net

我正在尝试让应用程序执行以下操作:
如果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>
编辑:忘记提及错误。

  

序列不包含元素

1 个答案:

答案 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