私は多くのXMLスキーマ最も効率的な方法は、クラスの使用は、XMLデシリアライズする方法を決定するために
例
XML 1.0のための多くの.xsdファイルを持っている - xml_1_0.xml
<?xml version="1.0" encoding="UTF-8"?>
<cars version="1.00">
<car>Honda</car>
<car>Ferrari</car>
</cars>
XMLを2.0 - xml_2_0.xml
<?xml version="1.0" encoding="UTF-8"?>
<cars version="2.00">
<car>
<name>Honda</name>
<color>White</color>
</car>
<car>
<name>Honda</name>
<color>Red</color>
</car>
</cars>
私はこの
xsd.exe cars_1_0.xsd /c
xsd.exe cars_2_0.xsd /c
よう.XSDから私のクラスを作成し、このようにデシリアライズ:
foreach(string file in files) {
XmlDocument doc = new XmlDocument();
doc.Load(file);
string version = doc.SelectSingleNode("/Cars/@version").Value;
if(version == "1.00")
{
Stream reader = new FileStream(file, FileMode.Open);
XmlSerializer serializer = new XmlSerializer(typeof(v1.Cars));
v1.Cars XML = new v1.Cars();
XML = (v1.Cars)serializer.Deserialize(reader);
}
else if(version == "2.00")
{
Stream reader = new FileStream(file, FileMode.Open);
XmlSerializer serializer = new XmlSerializer(typeof(v2.Cars));
v2.Cars XML = new v2.Cars();
XML = (v2.Cars)serializer.Deserialize(reader);
}
}
誰もがこれを行うには良い方法を知っている、またはより優れた性能を持っていますか?
実際のXSDを共有できますか? XSDをオプションに変更していますか?新しいクラスを作成するオプションですか? –
質問に私はちょうど例を書いた、xsdファイルははるかに複雑であり、xmlのどんなバージョンも多くの他の属性を持っています –