以下XML可能包含錯誤或不包含錯誤。
如果沒有,結果仍輸出<錯誤> </error>標記。LINQ讀取XML ...與XDocument
string xml =
"<response>
<total>1</total>
<bla>bla bla bla</bla>
<error></error>
</response>";
在我的代碼加載XML是這樣的:
XDocument doc = XDocument.Parse(xml);
XElement responseNode = doc.Element("response");
並解析錯誤標籤是這樣的:
List<Error> Errors = (from w in doc.Descendants("error")
select new Error
{
ErrorCode = w.ElementValueInt("errorcode"),
ErrorMessage = w.ElementValueString("errormessage")
}).ToListSafely<Error>();
問題:
時,有沒有錯誤,我仍然得到Count = 1,
,因爲doc.Descendants(「error」)找到了「<錯誤> < /錯誤>」
有沒有辦法告訴LINQ代碼來排除空節點
加載和解析節點時?
答:
我只需要添加 「在哪裏(w.HasElements)」 的LINQ,所以
List<Error> Errors = (from w in doc.Descendants("error")
where (w.HasElements)
select new Error
{
ErrorCode = w.ElementValueInt("errorcode"),
ErrorMessage = w.ElementValueString("errormessage")
}).ToListSafely<Error>();
...和它的作品!
你可以回答你自己的問題在下面的字段,然後將其標記爲正確這是可以接受在SO。阻止人們查看誰認爲未答覆的問題 - 並邀請希望看到已解答問題的人員。 – 2012-02-14 20:12:46