簡體   English   中英

XDocument並讀取xsi:nil =“ true”給出“字符串未被識別為有效的DateTime”

[英]XDocument and reading xsi:nil=“true” gives “String was not recognized as a valid DateTime”

樂於閱讀XML

var q2 = from c in xmlDoc.Descendants("Ticket")
         select new
                { Responded_Date = (DateTime)c.Element("Responded_Date") }

但是,當標簽為

<Responded_Date xsi:nil="true" />

我得到“字符串未被識別為有效的DateTime”。 我不希望使用null合並運算符,而只是將null並插入到datatable中

將Responded_Date聲明為可為空的日期時間。

var q2 = from c in xmlDoc.Descendants("Ticket")
         select new { Responded_Date = (DateTime?)c.Element("Responded_Date") };

如果<Responded_Date>元素丟失,將返回空值。

如果日期無效,則將收到FormatException- “無法將字符串識別為有效的DateTime。”。 <Responded_Date xsi:nil="true" />將導致FormatException。

Linq to XML本身不支持xsi:nil ,也請參見此msdn社交鏈接 解決方法是手動檢查,然后為日期指定一些默認值(即DateTime.MaxValue ),或者使用類投影而不是匿名類型,然后將null分配給可為null的DateTime? 屬性。

具有匿名類型( DateTime類型的Responded_Date

 select new
          { 
            Responded_Date = c.Element("Responded_Date").Value!="" 
                             ? (DateTime)c.Element("Responded_Date")
                             : DateTime.MaxValue
          }

使用自定義類投影(類型為DateTime? Responded_Date DateTime? ):

 select new MyFoo()
          { 
            Responded_Date = c.Element("Responded_Date").Value!="" 
                             ? (DateTime)c.Element("Responded_Date")
                             : null
          }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM