C# XmlSerializerを使って、任意のxmlファイルのattribute値を取得したい
System.Xml.Serialization.XmlSerializer.Deserialize(StreamReader)を使って、
任意のxmlファイルのrootタグにあるアトリビュート値を取り出したいです。
以下のようにしてデシリアライズしないで取得できることは分かっていますが、
デシリアライズ用のクラスA(アトリビュート名のプロパティを持つだけのクラス)
を作成して、デシリアライズして、A.アトリビュート名というような
感じで取得できないでしょうか?
うまくいかなくて悩んでいます。
さまざまな形式のXMLがありますが、ルートアトリビュートだけは同じXMLを読み込もうとしています。
// XMLドキュメントを開く
XmlDocument doc = new XmlDocument();
doc.Load(path);
// ルートの要素を取得
XmlElement xmlRoot = doc.DocumentElement;
stirng attribute = xmlRoot.GetAttribute("アトリビュート名");
Aクラスは以下のような感じを考えています。
public class A
{
[System.Xml.Serialization.XmlAttribute("アトリビュート名")]
public string アトリビュート名{ get; set; }
}
説明を追加させていただきます。
XMLの例としては以下のような感じです。二つのXMLに対して、同じAクラスを用いて
デシリアライズしたいのですが、
System.Xml.Serialization.XmlSerializer.Deserialize(StreamReader)
をコールすると一つ目のXMLをデシリアライズする際に以下のExceptionとなってしまいます。
[System.InvalidOperationException] = {"<RootTag xmlns=''> は指定できません。"}
1つ目のXML
<RootTag アトリビュート名="">
<AAA/>
<BBB/>
</RootTag>
2つ目のXML
<RootTag2 アトリビュート名="">
<CCC/>
<DDD/>
</RootTag2>