我有想解析成在C#的對象此XML文件:解析XML(使用由XSD.EXE生成的類) - 錯誤:有XML文檔中的誤差(83 8)
- 001-0180914-5787994.xml(http://pastebin.com/bzzAnsQL)
所以,我在VS快速打開2013這個XML文件,桌面和點擊的XML - >生成模式菜單選項。這產生了兩個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;
}
}
當測試程序運行,我收到此錯誤:
這個錯誤是什麼意思?我該如何解決它?
發佈發出的XML代碼。 – pid 2014-09-23 09:50:12
對不起,你的意思是?我以爲我已經發布了我擁有的一切。 – Latheesan 2014-09-23 09:52:37
我擁有的這個XML文件是從ChannelAdvisor API生成的,因此它不是手動創建的。因此,我不知道如何解決這個'xsi-type'錯誤。我是否在我的分析函數中將其從XML中省略? – Latheesan 2014-09-23 10:05:37