none
Generar XML a partir de Dataset segun esquema xsd RRS feed

  • Pregunta

  • Hola,

    estoy intentando generar un documento XML a partir de un dataset generado a partir de un esquema xsd. Los datos para cargar este dataset proceden de una base de datos Access. Todo funciona bien excepto que los nodos hijos, resultantes de tablas anidadas no se muestran en el orden que marca el esquema xsd. El código que utilizo es el siguiente:

                GENERO EL DATASET CON LA ESTRUCTURA DEL ESQUEMA XSD

                DS.ReadXmlSchema(ejemplo.xsd)           
                LEO DE LAS TABLAS DE ACCESS LOS DATOS
                Dim AdaptHeader As New OleDbDataAdapter
                Dim AdaptCompanyAddress As New OleDbDataAdapter
               
                AdaptHeader.SelectCommand = New OleDbCommand("select AuditFileVersion, CompanyID, TaxRegistrationNumber, TaxAccountingBasis, CompanyName, BusinessName, Header_Id, FiscalYear, Format([StartDate],'yyyy-mm-dd') as StartDate,  Format([EndDate],'yyyy-mm-dd') as EndDate, CurrencyCode, Format([DateCreated],'yyyy-mm-dd') as DateCreated, TaxEntity, ProductCompanyTaxID, SoftwareCertificateNumber, ProductID, ProductVersion, HeaderComment, Telephone, Fax, Email, Website from Header", dbConection)
                AdaptCompanyAddress.SelectCommand = New OleDbCommand("select * from CompanyAddress", dbConection)
                CARGO EL DATASET

                AdaptHeader.Fill(DS, "Header")            
                AdaptCompanyAddress.Fill(DS, "CompanyAddress")

                ESCRIBO EL XML

                DS.WriteXml("fichero.xml")

    El problema es que el esquema xsd me dice que la tabla anidada CompanyAddress tiene que aparecer entre los campos BusinessName y FiscalYear y con este código, la tabla anidada me aparece en la última posición, después del campo Website.

    El código del xsd para esta parte es el siguiente:

    <xs:element name="Header">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="AuditFileVersion" />
            <xs:element ref="CompanyID" />
            <xs:element name="TaxRegistrationNumber" type="SAFPTPortugueseVatNumber" />
            <xs:element ref="TaxAccountingBasis" />
            <xs:element ref="CompanyName" />
            <xs:element minOccurs="0" ref="BusinessName" />
            <xs:element ref="CompanyAddress"/>
            <xs:element ref="FiscalYear" />
            <xs:element ref="StartDate" />
            <xs:element ref="EndDate" />
            <xs:element name ="CurrencyCode" type="SAFPTCurrencyCode" />
            <xs:element ref="DateCreated" />
            <xs:element ref="TaxEntity" />
            <xs:element ref="ProductCompanyTaxID" />
            <xs:element ref="SoftwareCertificateNumber" />
            <xs:element ref="ProductID" />
            <xs:element ref="ProductVersion" />
            <xs:element minOccurs="0" ref="HeaderComment" />
            <xs:element minOccurs="0" ref="Telephone" />
            <xs:element minOccurs="0" ref="Fax" />
            <xs:element minOccurs="0" ref="Email" />
            <xs:element minOccurs="0" ref="Website" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>

    y por lo tanto, la validación de este XML generado me da error.

    Gracias de antemano y a ver si alguien me puede ayudar.

    Un saludo.

    martes, 9 de abril de 2013 19:41