【发布时间】:2012-02-27 13:13:31
【问题描述】:
我正在尝试使用 XElement 找出孩子的父节点。请参见下面的示例。这是我的数据:
<Data>
<Description>King</Description>
<Data>
<Description>Mike</Description>
<Data id="GUID1" Description="THIS IS A TEST" />
</Data>
<Data>
<Description>David</Description>
<Data id="GUID2" Description="THIS IS A TEST" />
<Data id="GUID3" Description="THIS IS A TEST" />
</Data>
<Data id="GUID4" Description="THIS IS A TEST" />
</Data>
所以父母(国王)有两个孩子迈克和大卫。我想知道谁是“大卫”的父母,我怎样才能找到这个?
下面是我的代码:
protected void Page_Load(object sender, EventArgs e)
{
var s =
@"<Data>
<Description>King</Description>
<Data>
<Description>Mike</Description>
<Data id=""GUID1"" Description=""THIS IS A TEST"" />
</Data>
<Data>
<Description>David</Description>
<Data id=""GUID2"" Description=""THIS IS A TEST"" />
<Data id=""GUID3"" Description=""THIS IS A TEST"" />
</Data>
<Data id=""GUID4"" Description=""THIS IS A TEST"" />
</Data>";
var doc = XElement.Load(new StringReader(s));
var result = (from data in doc.Descendants("Data")
where (string)data.Attribute("id") != null
select new
{
Id = data.Attribute("id").Value,
Decription = data.Attribute("Description").Value,
Child = data.Parent.Element("Description").Value,
Parent = data.Parent.Parent.Value **** THIS LINE ****
});
foreach (var element in result)
{
Console.WriteLine("{0} {1}", element.Id, element.Decription);
}
}
我尝试了一切,但没有运气。我不断得到data.Parent.Parent.Value ="KingMikeDavid" 的全部父级结果,这是错误的。我如何只返回没有孩子的“King”?
【问题讨论】:
标签: c# xml linq architecture xelement