Vb.net 将文本与XML值进行比较

Vb.net 将文本与XML值进行比较,vb.net,Vb.net,我正在尝试让应用程序执行以下操作: 如果Combobox1文本与.XML中的相同,则在文本框中输入“它们匹配” 这就是我正在尝试的代码 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

我正在尝试让应用程序执行以下操作:
如果Combobox1文本与.XML中的
相同,则在文本框中输入“它们匹配”

这就是我正在尝试的代码

 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
Dim DocList As String=“C:\Users\jefhill\Desktop”
Dim Name1作为字符串
Dim NAME 2作为字符串
Name1=(XElement.Load(DocList+“\parts.xml”)…单个)
Name2=(XElement.Load(DocList+“\parts.xml”)…单个)
如果ComboBox1.Text=Name1,则
DesTextBox.Text=(XElement.Load(DocList+“\parts.xml”)…单个)
ElseIf ComboBox1.Text=Name2然后
DesTextBox.Text=(XElement.Load(DocList+“\parts.xml”)…单个)
“ect
XML文档示例:

<Name1>Words</Name1>
<Name2>More Words</Name2>
单词
更多的话
编辑:忘记提到错误

序列不包含任何元素

错误

序列不包含任何元素

源于在未找到匹配元素时调用
.Single()
,这意味着您要查询的一个或多个元素名称在XML文档中丢失。因为您提供的XML不完整,所以我无法判断是哪一种。这可能是一个简单的打字错误

代码中还有几个其他问题。我建议对使用
选项,以避免出现这些问题

您应该只加载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
Dim Name1作为String=xml..Single().Value
Dim Name2的字符串=xml..Single().Value

这不是有效的XML文档-您需要一个根元素。您还应该真正地将
选项严格设置为
。而且。。。你的问题是什么?代码a)没有编译,b)崩溃,c)产生错误的结果,d)其他什么?也许你可以看看。@Mark Ya抱歉,刚才添加了我得到的错误,忘记了:(它是编译的,但当我将组合框更改为我正在测试的文本时,它会出现上述错误。无需担心。您得到的错误来自一个
.Single
调用。根据您的示例XML,您的XML中没有
元素,因此可能是其中之一?您还应该使用
.Value
要从
XElement
获取字符串值-我认为它的工作原理是因为
选项严格关闭
对字符串进行隐式转换。您也不需要每次调用
XElement.Load
,只需加载XML一次并将其保存在变量中。每次加载相同的XML文档-
DocList+“\parts.xml”
-所以只需
Dim-xml作为XElement=XElement.Load(DocList+“\parts.xml”)
Dim-Name1作为String=xml..Single().Value
。这就是您要问的吗?感谢所有的帮助标记!