0

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を取得してデータテーブルに挿入したいだけです

4

2 に答える 2

1

Responded_Date を null 許容の日時として宣言します。

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

要素が欠落している場合は<Responded_Date>、null 値が返されます。

無効な日付の場合、「文字列は有効な DateTime として認識されませんでした」というFormatExceptionが発生します。<Responded_Date xsi:nil="true" />FormatException が発生します。

于 2011-03-08T04:13:29.423 に答える
0

Linq to XML はネイティブではサポートしていません。xsi:nilこのmsdn ソーシャル リンクも参照してください。回避策として、手動でチェックしてから、日付にデフォルト値を割り当てるか (つまりDateTime.MaxValue)、匿名型の代わりにクラス プロジェクションを使用して、null 許容 DateTime に null を割り当てますか? 財産。

匿名型 ( Responded_Datetype のDateTime:

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

カスタム クラス プロジェクション (Responded_DateタイプDateTime?) を使用:

 select new MyFoo()
          { 
            Responded_Date = c.Element("Responded_Date").Value!="" 
                             ? (DateTime)c.Element("Responded_Date")
                             : null
          }
于 2011-03-08T04:01:55.967 に答える