[英]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.