我需要阅读一些遵循 ONIX 标准的 XML 文件参见:http ://www.editeur.org/93/Release-3.0-Downloads/
为此,我下载了 ONIX 3.0 XSD: http ://www.editeur.org/files/ONIX%203/ONIX_BookProduct_XSD_schema+codes_Issue_25.zip
使用下载的 XSD 和这个命令“xsd your.xsd /classes”我创建了我想使用的类。
当尝试像这样创建一个新的 Xml 序列化器时:
var xmls = new XmlSerializer(typeof(Model.ONIX.editeur.ONIXMessage));
我得到了例外
“反映类型‘Model.ONIX.editeur.ONIXMessage’时出现错误。”
当我深入了解内部异常时,我最终得到以下消息:
"{"无法使用 XmlText 属性对成员“文本”进行编码。您可以使用 XmlText 属性对基元、枚举、字符串数组或 XmlNode 数组进行编码。"}"
我不知道该怎么办,XSD 有问题吗?有什么建议么?!
编辑
public static List<Model.ONIX.editeur.Product> GetProductsDataFromOnixFile(string onixFileLocation)
{
var xmls = new XmlSerializer(typeof(Model.ONIX.editeur.ONIXMessageRefname));
using (var reader = XmlReader.Create(onixFileLocation))
{
if (xmls.CanDeserialize(reader))
{
var onixMessage = (Model.ONIX.editeur.ONIXMessage)xmls.Deserialize(reader);
return onixMessage.Items.OfType<Model.ONIX.editeur.Product>().ToList();
}
throw new Exception(string.Format("Cant read the file {0} as Onix", onixFileLocation));
}
}