XElement迭代不起作用

时间:2012-09-10 11:57:48

标签: c# xml ienumerable xelement

我正在尝试浏览此XML:

<result>
    <diaryelement>
       <diary_uid>86248040</diary_uid>
       <diary_date>1347274789</diary_date>
       <diary_type>0</diary_type>

       <diaryshortitem>
         <itemid>419</itemid>
         <data>...</data>
          <description>...</description>
       </diaryshortitem>
    </diaryelement>
</result>

我用于迭代的代码是:

XElement diary = XElement.Parse(e.Result);
IEnumerable<XElement> diaryelements = diary.Descendants("result");

Debug.WriteLine("No error");

                foreach (XElement diaryelement in diaryelements) 
                {
                    Debug.WriteLine(diaryelement.Value);
                    Debug.WriteLine((string)diaryelement.Element("diaryelement").Element("diaryshortitem").Element("description").Element("data").Value);
                }

Debug.WriteLine("Loop ended");

但该方法似乎跳过了迭代,我不知道为什么。

2 个答案:

答案 0 :(得分:2)

IEnumerable<XElement> diaryelements = diary.Descendants("diaryelement");

此更改将获得“diaryelement”的所有后代,之后您可以逐个解析

答案 1 :(得分:0)

而不是XElement.Parse尝试使用XDocument.Parse。另外,请考虑调整xml元素路径 在这一行

Debug.WriteLine((string)diaryelement.Element("diaryelement").Element("diaryshortitem").Element("description").Element("data").Value);

因为它不正确。