私は子供の親ノードを見つけるために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>
したがって、親(キング)には2人の子供、マイクとデイビッドがいます。私が欲しいのは、「デイヴィッド」の親である人を見つけることです。これをどのように見つけることができますか?ここで
は、以下の私のコードです:
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"
の親の結果全体が間違っています。子どもなしでちょうど "キング"を返すにはどうすればいいですか?
私は別のXMLファイルの行<データID =「」GUID4「」説明=「」これはテストです「」/>更新されたバージョンを参照してくださいを追加するのを忘れ申し訳ありません。これはヌル実行をスローしますか? – user929153
しかし、この要素は一番上のデータ要素の子であり、それは王に属している、言い換えれば、親を持たない...。私はこのケースの答えを編集しました。 – user1096188
ありがとうございました。 :-)これで時間の多くを費やしました.. – user929153