簡體   English   中英

解析XML(使用xsd.exe生成的類)-錯誤:XML文檔中存在錯誤(83,8)

[英]Parsing XML (using class generated by xsd.exe) - Error: There is an error in XML document (83, 8)

我有一個要解析為C#對象的XML文件:

因此,我在VS Express 2013 for Desktop中打開了該xml文件,然后單擊XML-> Generate Schema菜單選項。 這生成了兩個XSD模式文件:

然后,我編寫了一個批處理腳本,該腳本使用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#類:

最后,我將其添加到測試控制台應用程序項目中,並嘗試從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),我在第83行看到xsi:type

有關此錯誤的更多信息,請參見 “為本地complexType指定xsi:type是否有效? ”。

據我所知,您需要在XSD中定義OrderLineItemItemResponse類型。

問題出在XML中,而解決方案在XSD中。 您必須定義類型,以使其合法並通過驗證。 例如,第一個XSD定義了OrderResponseDetailComplete OrderLineItemItemResponse的XSD在哪里?

根據使用情況,這可能是一個可行的解決方案: 使用替換組從xsd.exe生成的代碼進行序列化的XML無效(無效的xsi:type錯誤)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM