代码之家  ›  专栏  ›  技术社区  ›  Piero Alberto

XSD不能生成类,但可以在类似的文件上工作

  •  1
  • Piero Alberto  · 技术社区  · 6 年前

    “无法生成类,因为找不到具有复杂类型的顶级元素。”

    我修复的文件是:

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema xmlns:mg="urn:crif-messagegateway:2006-08-23" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:crif-messagegateway:2006-08-23" elementFormDefault="qualified" attributeFormDefault="unqualified">
        <xs:element name="MGRequest" type="xs:string"/>
        <xs:element name="MGResponse" type="xs:string"/>
    </xs:schema>
    

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:mg="urn:crif-messagegateway:2006-08-23" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:crif-messagegateway:2006-08-23" elementFormDefault="qualified" attributeFormDefault="unqualified">
        <xs:element name="MGRequest">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:string" />
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
        <xs:element name="MGResponse">
            <xs:complexType>
                <xs:simpleContent>
                    <xs:extension base="xs:string" />
                </xs:simpleContent>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    

    “无法生成类,因为找不到具有复杂类型的顶级元素。” . 哪一个是问题?上面的工作文件有什么不同?

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:mg="urn:crif-messagegateway:2006-08-23" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:crif-messagegateway:2006-08-23" elementFormDefault="qualified" attributeFormDefault="unqualified">
        <xs:element name="MGRequest">
            <xs:complexType>
                <xs:sequence>
                    <xs:any namespace="##other"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
        <xs:element name="MGResponse">
            <xs:complexType>
                <xs:sequence>
                    <xs:any namespace="##other"/>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:schema>
    

    我也试过使用xsd2代码,但得到的只是一个空类。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Sprotty    5 年前

    我想如果你运行它,它不需要创建一个类来包装一个基本类型 Liquid XML Objects

    namespace LiquidTechnologies.GeneratedLx.Mg
    {
        #region Elements
        /// <summary>A class representing the root XSD element MGRequest@urn:crif-messagegateway:2006-08-23</summary>
        /// <XsdPath>schema:schema.xsd/element:MGRequest</XsdPath>
        /// <XsdFile>file://sandbox/schema.xsd</XsdFile>
        /// <XsdLocation>3:5-3:52</XsdLocation>
        [LxSimpleElementDefinition("MGRequest", "urn:crif-messagegateway:2006-08-23", ElementScopeType.GlobalElement)]
        public partial class MGRequestElm
        {
            /// <summary>Holds the <see cref="System.String" /> (xs:http://www.w3.org/2001/XMLSchema:string) value of the element</summary>
            /// <XsdPath>schema:schema.xsd/element:MGRequest</XsdPath>
            /// <XsdFile>file://sandbox/schema.xsd</XsdFile>
            /// <XsdLocation>3:5-3:52</XsdLocation>
            [LxValue(LxValueType.Value, XsdType.XsdString)]
            public System.String Value { get; set; } = "";
    
        }
    
        /// <summary>A class representing the root XSD element MGResponse@urn:crif-messagegateway:2006-08-23</summary>
        /// <XsdPath>schema:schema.xsd/element:MGResponse</XsdPath>
        /// <XsdFile>file://sandbox/schema.xsd</XsdFile>
        /// <XsdLocation>4:5-4:53</XsdLocation>
        [LxSimpleElementDefinition("MGResponse", "urn:crif-messagegateway:2006-08-23", ElementScopeType.GlobalElement)]
        public partial class MGResponseElm
        {
            /// <summary>Holds the <see cref="System.String" /> (xs:http://www.w3.org/2001/XMLSchema:string) value of the element</summary>
            /// <XsdPath>schema:schema.xsd/element:MGResponse</XsdPath>
            /// <XsdFile>file://sandbox/schema.xsd</XsdFile>
            /// <XsdLocation>4:5-4:53</XsdLocation>
            [LxValue(LxValueType.Value, XsdType.XsdString)]
            public System.String Value { get; set; } = "";
    
        }
    
        #endregion
    
    }
    

    液体XML对象对于小型xsd是免费的。

    推荐文章