JA
マイツール

XMLをC#クラスに変換(XmlSerializer)

XMLからXmlSerializer用のC#クラスを生成します。XmlRoot、XmlElement、XmlAttribute、XmlTextの属性、繰り返し要素用のList<T>、推定された型に対応しています。

オフにすると、すべての値が文字列になります。
C#コード
生成されたクラスの数
3
デシリアライズの方法
using System.IO;が必要です

XmlSerializerは属性にnull許容の値型を使えないため、省略可能な数値・bool・日付の属性には、その属性が存在したかどうかを示す補助の…Specifiedプロパティが付きます。

日付のみの値(2000-10-01)には、XmlSerializerが時刻なしで読み書きできるようにDataType = "date"が使われます。

マイツール →
広告

.NETのXmlSerializerでXMLをオブジェクトに読み込むには、ドキュメントと正確に対応する属性を持つクラスが必要です。ルートには[XmlRoot]、子要素には[XmlElement]、属性には[XmlAttribute]、属性と並ぶテキストには[XmlText]です。サンプルのドキュメントを貼り付けると、それらのクラスが得られます。繰り返される要素はList<T>になり、数値・真偽値・日付は型付けされ、省略可能な値はXmlSerializerが求める方法で処理され、名前空間も引き継がれます。

使い方

  1. 代表的なXMLドキュメントを貼り付けます。省略可能な要素や繰り返しをどこかに含めてください。
  2. 必要に応じてC#の名前空間を入力します。
  3. 値に型を付ける(int、decimal、bool、DateTime)か、文字列のままにするかを選びます。
  4. クラスをコピーし、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はアップロードされますか?

いいえ。生成はブラウザ内で行われます。

出典

最終更新:

このツールを引用する
APA

kakaoCalc. (2026, November 8). XMLをC#クラスに変換(XmlSerializer). https://kakao.mobile/ja/tools/xml-to-c-pojo-generator/

MLA

“XMLをC#クラスに変換(XmlSerializer).” kakaoCalc, 8 Nov. 2026, kakao.mobile/ja/tools/xml-to-c-pojo-generator/.

広告