[解決済み] XmlSerializerでDateTimeを'YYYY-MM-DD hh:mm:ss'としてシリアライズするよう強制する。
2023-05-04 03:19:49
質問
ある RESTful サービス用の XSD スキーマを持っています。このスキーマを
xsd.exe
ツールを使って C# コードを生成すると、XSD の
xs:date
は以下のようなコードを生成します。
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType="date")]
public System.DateTime time {
get {
return this.timeField;
}
set {
this.timeField = value;
}
}
XML をオブジェクトにデシリアライズする際に
XmlSerializer
を使用してオブジェクトにデシリアライズする場合、 すべてがうまくいくように見えます。私が直面している問題は、サービスが日付のフォーマットを
YYYY-MM-DD hh:mm:ss
としてフォーマットされることを期待しているのに、 XSD によって生成されたコードでは
YYYY-MM-DD
.
XSD を手動で修正すると
xs:dateTime
型に変更すると、生成された C# コードが生成します。
2010-08-20T20:07:03.915039Z
.
基本的には、どのようにシリアライズすれば
YYYY-MM-DD hh:mm:ss
? XSDに何かすることがあるのでしょうか、それとも生成されたC#コードを変更するために何かできることがあるのでしょうか?
どのように解決するのですか?
過去に、datetimeのシリアライズを制御するために、以下のようなことをしていました。
- DateTime プロパティを無視する。
- 望みの方法でシリアライズ/デシリアライズするダミーの文字列プロパティを作成する。
以下はその例です。
public class SomeClass
{
[XmlIgnore]
public DateTime SomeDate { get; set; }
[XmlElement("SomeDate")]
public string SomeDateString
{
get { return this.SomeDate.ToString("yyyy-MM-dd HH:mm:ss"); }
set { this.SomeDate = DateTime.Parse(value); }
}
}
関連
-
[解決済み】バックスラッシュを含むパス文字列のエスケープシーケンスが認識されない件
-
[解決済み] 2つのリストを結合する
-
[解決済み】ユーザー設定値を別のユーザー設定値で設定する
-
[解決済み] DateTime型の誕生日から年齢を計算するにはどうしたらいいですか?
-
[解決済み] .NETアプリケーションを強制的に管理者として実行させるにはどうしたらいいですか?
-
[解決済み] DateTimeとDateTimeOffsetの比較
-
[解決済み] C# DateTimeを "YYYYMMDDHHMMSS "フォーマットに変換する。
-
[解決済み] XmlSerializer のコンストラクタで FileNotFoundException を発生させる
-
[解決済み] オブジェクトを文字列に直列化する
-
[解決済み】オブジェクトをXMLにシリアライズする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】Socket.Selectがエラー "An operation was attempted on something that is not a socket" を返す。
-
[解決済み】HRESULTからの例外:0x800A03ECエラー
-
[解決済み】値をNULLにすることはできません。パラメータ名:source
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み】.NETのDateTimeからミリ秒を切り捨てる方法