2015-07-24 3 views
-1

Я пытаюсь сделать следующее приложение:
Если текст Combobox1 совпадает с <Name1></Name1> в .XML, введите «Они соответствуют» в текстовое поле.Сравнение текста с 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 

пример документа XML:

<Name1>Words</Name1> 
<Name2>More Words</Name2> 

EDIT: Забыл упомянуть об ошибке.

Последовательность не содержит элементов

+1

Это не действительный XML-документ - вам нужен один корневой элемент. Вы также должны повернуть «Option Strict On». И ... в чем ваш вопрос? Является ли код a) не компилируется, b) сбой, c) порождает неверные результаты, d) что-то еще? Возможно, взгляните на [ask]. – Mark

+0

@Mark Я сожалею, просто добавил ошибку, которую я получаю, забыл :(Он компилируется, но когда я меняю combobox на текст, который я тестирую, он ошибается с ошибкой выше – dwb

+1

Не беспокойтесь. Ошибка, которую вы получаете, идет из одного из вызовов '.Single'. На основе вашего XML-образца в вашем XML-элементе нет элементов' 'или' ' ', поэтому, возможно, один из них? Вы также должны использовать' .Value' для получения строки value из 'XElement' - я полагаю, что он работает как есть, потому что' Option Strict Off' делает неявное преобразование в строку. – Mark

ответ

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 
+0

Спасибо за помощь! – dwb

Смежные вопросы