我面臨的情況是使用Linq將XML文檔解析爲對象。在解析過程中,我正在檢查以確保元素在執行解析出它們的值之前不爲空。無論如何要簡化這個陳述嗎?XML到LINQ檢查空元素
var variable = (from x in xdoc.Descendants("Root")
select new AccountingResponse
{
NetCharge = x.Element("Charges") != null && x.Element("Charges").Element("NetCharge") != null ? x.Element("Charges").Element("NetCharge").Value : "0",
TotalCharge = x.Element("Charges") != null && x.Element("Charges").Element("TotalCharge") != null ? x.Element("Charges").Element("TotalCharge").Value : "0"
}).SingleOrDefault();
總之,我不想繼續檢查節點是否存在於每一行上。我知道我可以在解析之前測試節點是否存在,但可能還有其他需要解析的數據來創建AccountingResponse,並且我希望避免一次僅解析一部分XML的語句。
或者我可能完全錯了,還有更好的辦法!
是的,只是將其用於演示,謝謝雖然改變! – cgatian 2013-04-05 15:35:09
你爲什麼要做.Select(x =>(int)x)?不應該。選擇(y =(int)y.Value)?既然我們仍然需要知道元素的值,並且上面聲明瞭x,所以它需要是一個不同的變量? – cgatian 2013-04-05 15:44:04
@cgatian:是的,錯過了重複的變量名。定影。 – 2013-04-08 13:11:01