次のように、XDocumentを使用してXMLファイルを作成しています。
var d = DateTime.Now;
var xDocument = new XDocument(new XElement("ThisIsADate", d));
ただし、結果のXMLは、xs:datetime形式(「2012-05-11T00:00:00」など)を使用して日付dを表します。つまり、時間情報が含まれます。
ただし、私のXMLは、要素を「xs:date」型として定義するXMLスキーマと一致するように意図されています。その結果、余分な時間情報のために、スキーマに対して検証されたときにファイルが拒否されます。
どうすればこれを修正できますか?ToString()を使って自分で日付をフォーマットできることは知っていますが、これは確かに「正しい」方法ではありません。日付を有効なXML日付としてフォーマットする方法を知ることは期待できません。これは、フレームワークのXML関連部分の仕事です。
編集: ToString()を使用して日付をフォーマットする方法を知っていることに注意してください。また、どのフォーマット文字列が正しい結果をもたらすかについても知っています。それは私が探している答えではありません。xs:date(など)が何であるかを理解し、それらの種類のエンコーディングをサポートする関数/メソッド/クラスを探しています。
明確にするために、私は「それを成し遂げる」ことを望んでいません、私は「それを正しくすること」を探しています。そして、XMLホイールを再発明することは、私の本では「正しく行う」ことではありません。