C# でオブジェクトに解析したい次の XML ファイルがあります。
- 001-0180914-5787994.xml ( http://pastebin.com/bzzAnsQL )
そこで、デスクトップ用の VS Express 2013でこの xml ファイルを開き、 [XML] -> [スキーマの生成] メニュー オプションをクリックしました。これにより、次の 2 つの XSD スキーマ ファイルが生成されました。
- 001-0180914-5787994.xsd ( http://pastebin.com/QsvARtyB )
- 001-0180914-57879941.xsd ( http://pastebin.com/FH4XNhvd )
次に、 xsd.exeツール (.NET SDK に付属) を使用して、次のようなスキーマから C# クラス ファイルを生成するバッチ スクリプトを作成しました。
@ECHO off
set xsdFile="C:\Users\Administrator\Desktop\test\001-0180914-5787994.xsd"
set outDirectory="C:\Users\Administrator\Desktop\test\out"
set xsdExeDir="C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools"
set language="CS"
cd %xsdExeDir%
xsd.exe "%xsdFile%" "C:\Users\Administrator\Desktop\test\001-0180914-57879941.xsd" /c /out:"%outDirectory%" /l:"%language%"
pause
上記のバッチ スクリプトを実行すると、次の C# クラスが生成されました。
- 001-0180914-57879941.cs ( http://pastebin.com/wX8N0DAf )
最後に、これをテスト コンソール アプリ プロジェクトに追加し、XML ファイルとこの自動生成されたクラスからオブジェクトを生成しようとしました。
class Program
{
static void Main(string[] args)
{
try
{
var order = Parse("001-0180914-5787994.xml");
Console.WriteLine("Success !!!");
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
Console.WriteLine("Press any key to exit...");
Console.Read();
}
public static OrderResponseDetailComplete Parse(String XMLFile)
{
var settings = new XmlReaderSettings();
var obj = new OrderResponseDetailComplete();
var reader = XmlReader.Create(XMLFile, settings);
var serializer = new XmlSerializer(typeof(OrderResponseDetailComplete));
obj = (OrderResponseDetailComplete)serializer.Deserialize(reader);
reader.Close();
return obj;
}
}
テスト プログラムを実行すると、次のエラーが発生します。
このエラーはどういう意味ですか? どうすれば修正できますか?