XMLをC#クラスに変換(XmlSerializer)
XMLからXmlSerializer用のC#クラスを生成します。XmlRoot、XmlElement、XmlAttribute、XmlTextの属性、繰り返し要素用のList<T>、推定された型に対応しています。
XmlSerializerは属性にnull許容の値型を使えないため、省略可能な数値・bool・日付の属性には、その属性が存在したかどうかを示す補助の…Specifiedプロパティが付きます。
日付のみの値(2000-10-01)には、XmlSerializerが時刻なしで読み書きできるようにDataType = "date"が使われます。
.NETのXmlSerializerでXMLをオブジェクトに読み込むには、ドキュメントと正確に対応する属性を持つクラスが必要です。ルートには[XmlRoot]、子要素には[XmlElement]、属性には[XmlAttribute]、属性と並ぶテキストには[XmlText]です。サンプルのドキュメントを貼り付けると、それらのクラスが得られます。繰り返される要素はList<T>になり、数値・真偽値・日付は型付けされ、省略可能な値はXmlSerializerが求める方法で処理され、名前空間も引き継がれます。
使い方
- 代表的なXMLドキュメントを貼り付けます。省略可能な要素や繰り返しをどこかに含めてください。
- 必要に応じてC#の名前空間を入力します。
- 値に型を付ける(int、decimal、bool、DateTime)か、文字列のままにするかを選びます。
- クラスをコピーし、new XmlSerializer(typeof(Root))でデシリアライズします。
計算式
ルート → [XmlRoot]クラス · 属性 → [XmlAttribute] · 子要素 → [XmlElement] · 繰り返される子 → List<T> · 属性と並ぶテキスト → [XmlText]
テキストだけの要素は、単純な型のプロパティになります。範囲に応じてintまたはlong、decimal、bool(true/false)、DateTime(xs:dateTimeまたはxs:date。後者はDataType = "date"つき)、それ以外はstringで、空の出現が1回でもあればstringのままです。属性や子を持つ要素はクラスになり、構造が同じなら共有されます。値型の省略可能な要素はT?になりますが、値型の省略可能な属性には…Specifiedフラグが付きます。XmlSerializerがnull許容の属性をサポートしていないためです。
計算例
サンプルのcatalogからは3つのクラスができます。CatalogにはList<Book> Books([XmlElement("book")])があります。Bookには、Id(string)、Available(boolで、最初の本にしかないためAvailableSpecifiedが付く)、Author、Title、Price、Published(DateTime、DataType = "date")、List<string> Tagsがあります。Priceには、currency属性と、44.95または5.95を保持するdecimalの[XmlText] Valueがあります。
よくある質問
プロパティに…Specifiedの相棒が付くのはなぜですか?
XmlSerializerは属性をnull許容型にマッピングできません。Specifiedパターンはその組み込みの代替手段で、boolが属性が存在したかどうかを示し、書き出すかどうかも制御します。
値がintではなくstringになるのはなぜですか?
少なくとも1つのサンプルの値が単純な数値ではない、空である、または郵便番号や007のように0で始まっていて、数値型だと0が失われるためです。型の推定をオフにしてすべて文字列のままにするか、型を手で修正してください。
XSDファイルも読み込めますか?
いいえ。サンプルのドキュメントからクラスを推定します。XSDがある場合は、Microsoftのxsd.exeやdotnet-xscgenが、スキーマから直接クラスを生成します。
XMLはアップロードされますか?
いいえ。生成はブラウザ内で行われます。
出典
最終更新:
この入力内容のページアドレス: https://kakao.mobile/ja/tools/xml-to-c-pojo-generator/
このツールを引用する
kakaoCalc. (2026, November 8). XMLをC#クラスに変換(XmlSerializer). https://kakao.mobile/ja/tools/xml-to-c-pojo-generator/
“XMLをC#クラスに変換(XmlSerializer).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ja/tools/xml-to-c-pojo-generator/.