我是新来的,所以请耐心等待。使用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的变量,这样我就可以提取记录信息并将其绑定到单个文本块
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”和“text”绑定到不同的文本块
idTextBlock.Text = id
textTextBlock.Text = text
这当然会引发有关id和文本的“各种错误”“在此上下文中不存在”。我看到的所有示例都只是将输出集中在控制台上的一个字符串中,这对我没有帮助。我真的很新(第二周)编程,所以我可能做错了。任何援助将不胜感激。谢谢!
答案 0 :(得分:0)
我已经更正了您提供的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>