首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从XSD生成的类不适用于XmlSerializer。

从XSD生成的类不适用于XmlSerializer。
EN

Stack Overflow用户
提问于 2014-07-09 08:31:36
回答 1查看 780关注 0票数 2

我需要阅读一些遵循ONIX标准的XML文件(请参阅:http://www.editeur.org/93/Release-3.0-Downloads/ )

为此,我下载了Onix3.0XSD:25.zip

使用下载的XSD和这个命令"xsd your.xsd /classes“,我创建了我想要使用的类。

当尝试创建新的Xml序列化程序时,如下所示:

代码语言:javascript
复制
var xmls = new XmlSerializer(typeof(Model.ONIX.editeur.ONIXMessage));

我得到和例外

“反映‘Model.ONIX.edeur.ONIXMessage’类型的错误。”

当我深入研究内部异常时,我会得到以下信息:

“{”成员‘文本’不能使用XmlText属性进行编码。您可以使用XmlText属性对原语、枚举、字符串数组或XmlNode数组进行编码。

我不知道该怎么做,XSD有什么问题吗?有什么建议吗!

编辑

代码语言:javascript
复制
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));
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2019-01-14 13:41:29

我知道这个问题已经很久了,但我想其他有特定Onix问题的人会遇到这个问题。

这是我怎么让它工作的。

在引用中,xsd中有两个包含在顶部。在这里,我复制/粘贴了另外两个文件。

代码语言:javascript
复制
<xs:include schemaLocation="ONIX_BookProduct_CodeLists.xsd" />
<xs:include schemaLocation="ONIX_XHTML_Subset.xsd" />

也就是说,这些行在文件中被替换为相应的文件。

然后我做了

代码语言:javascript
复制
xsd ONIX_BookProduct_3.0_reference.xsd /classes

然后生成.cs文件。这里唯一的问题是,我必须从所有字段(例如List147 )中删除一个文本属性,而不是从字符串字段中移除一个文本属性。例如,我必须从生成的代码中删除该属性,如下所示:

代码语言:javascript
复制
/// <remarks/>
[System.Xml.Serialization.XmlTextAttribute()]
public List121 textscript {
    get {
        return this.textscriptField;

但不是像这样的属性

代码语言:javascript
复制
/// <remarks/>
[System.Xml.Serialization.XmlTextAttribute()]
public string Value {
    get {
        return this.valueField;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24648824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档