2014-10-30 2 views
0

У меня есть XML-файл, как это:LINQ к XML-файл

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<Table> 
    <User> 
    <Danik>ID15101639</Danik> 
    <ID15101639>Danik</ID15101639> 
    </User> 
    <User> 
    <Marcel>ID29101645</Marcel> 
    <ID29101645>Marcel</ID29101645> 
    </User> 
</Table> 

И мне нужно искать в этом файле - если имя пользователя Imput как «Даника» (TextBox1.Text) он должен показать его «ID15101639» ,

private void button1_Click(object sender, EventArgs e) 
     { 
      jmeno = textBox1.Text; 
      XElement xelement = XElement.Load("seznam.xml"); 
      IEnumerable<XElement> Table = xelement.Elements(); 
      foreach (var User in Table) 
      { 
       overeni = User.Element(jmeno).Value; 
       textBox2.Text = overeni; 
} 

К сожалению, это не работает должным образом. Не могли бы вы посоветовать, в чем проблема?

Он показывает ошибку в строке 12 - overeni = User.Element (jmeno) .Value; Ошибка: директива using для System.Linq появилась в этом пространстве имен.

+0

Как это не работает должным образом? Ошибка? Неверный результат? –

+0

Хороший вопрос, возможно, вам также стоит сообщить проблему = проблема – Doro

+0

Прошу прощения - она ​​не найдена в XML-файле. – user3069602

ответ

0

Вы можете попробовать этот путь вместо того, чтобы избежать этого пустой ссылки исключения:

//filter only <Tables> having child element <{jmeno}> 
//then return that <{jmeno}> element 
XElement User = xelement.Elements() 
         .Where(o => o.Element(jmeno) != null) 
         .Select(o => o.Element(jmeno)) 
         .FirstOrDefault(); 
if (User != null) 
{ 
    overeni = User.Value; 
    textBox2.Text = overeni; 
} 
+0

Super! Это работает правильно! Спасибо! – user3069602