Запрос XML для извлечения одной записи и привязки данных к отдельным текстовым блокам - PullRequest
2 голосов
/ 13 декабря 2011

Я новичок в этом, так что терпите меня.Используя C # и LINQ, я пытаюсь извлечь одну запись из файла XML и хочу связать ее элементы и атрибуты с отдельными текстовыми блоками.

Допустим, у меня есть этот XML-файл с именем Test.xml:

<Data>
  <Test id=1>
     <Text>"First Record"</Text>
  </Test>
  <Test id=2>
     <Text>"Second Record"</Text>
  </Test>
<Data>

Я хочу передать переменную для идентификатора, чтобы я мог извлечь эту информацию и связать ее с отдельными текстовыми блоками

var r = 2  // just hardcoding for the example

XDocument d = XDocument.Load("Test.xml");

var q = from t in d.Descendants("Test")
where t.Attribute("id").Value == r  
select new
{
   id = t.Attribute("id").Value,
   text = t.Element("text").Value
}

Теперь я хотел бы связать "id" и«текст» для отдельных текстовых блоков

idTextBlock.Text = id
textTextBlock.Text = text

Это, конечно, приводит к всевозможным ошибкам в отношении идентификатора и текста «не существует в этом контексте».Все примеры, которые я видел, просто помещают вывод в единую строку на консоли, что мне не помогает.Я действительно новичок (2-я неделя) в программировании, поэтому, возможно, я делаю это совершенно неправильно.Любая помощь будет оценена.Спасибо!

1 Ответ

0 голосов
/ 13 декабря 2011

Я исправил XML, который вы указали, чтобы получить приведенный ниже запрос.

int r = 2;
XDocument xdoc = XDocument.Load("Test.xml");            
string id = r.ToString();
string text = xdoc.Descendants("Test")
                  .Where(d => d.Attribute("id").Value == id)                
                  .Descendants("Text")
                  .Select(n => n.Value)
                  .SingleOrDefault(); 

Исправленный XML: (закрытый тег Data, значение атрибута id заключено в двойные кавычки)

<Data>   
  <Test id="1"> 
     <Text>"First Record"</Text>   
  </Test>   
  <Test id="2">
      <Text>"Second Record"</Text>   
  </Test> 
</Data>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...