查询XML以提取一条记录并将数据绑定到单个文本块

本文关键字:数据绑定 单个 文本 XML 提取 一条 记录 查询 | 更新日期: 2023-09-27 18:17:46

我是新手,所以请原谅我。使用c#和LINQ,我试图从XML文件中取出一条记录,我想将它的元素和属性绑定到单个文本块。

假设我有一个名为Test.xml:

的xml文件
<Data>
  <Test id=1>
     <Text>"First Record"</Text>
  </Test>
  <Test id=2>
     <Text>"Second Record"</Text>
  </Test>
<Data>

我想传递一个变量的id,所以我可以拉出记录信息,并将其绑定到单个textblock

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"answers"text"到单独的文本块

idTextBlock.Text = id
textTextBlock.Text = text

这当然会抛出各种关于id和文本"不存在于此上下文中"的错误。我所看到的所有示例都只是简单地将输出集中到控制台上的单个字符串,这对我没有帮助。我真的是新的(第二周)编程,所以我可能做这个完全错误的。任何协助将不胜感激。谢谢!

查询XML以提取一条记录并将数据绑定到单个文本块

我已经更正了您提供的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>