tags:

views:

22

answers:

1

I am using

myXmlDataDoc.DataSet.ReadXml(xml_file_name, XmlReadMode.InferSchema);

to populate the tables within the dataset created by reading in a xml schema using:

myStreamReader = new StreamReader(xsd_file_name);
myXmlDataDoc.DataSet.ReadXmlSchema(myStreamReader);

The problems I am facing is when it comes to read the xml tag:

<xs:element name="parameters" minOccurs="0" maxOccurs="12" type="xs:unsignedInt"/>

The readXml function puts the element in a different table and everything in the tables are 0s. Here is the print out of the datatable:

TableName: test_data
 100     2   1  
TableName: parameters
 1   0
 2   0
 3   0
 4   0
 5   0
 6   0
 7   0
 8   0
 9   0
 10  0
 11  0
 12  0

In my xsd file, I represent an array using this:

<xs:element name="test_data">
    <xs:complexType>
        <xs:complexContent>
            <xs:extension base="test_base">
                <xs:sequence>
                    <xs:element name="a" type="xs:unsignedShort"/>
                    <xs:element name="b" type="xs:unsignedShort"/>
                    <xs:element name="c" type="xs:unsignedInt"/>
                    <xs:element name="parameters" minOccurs="0" maxOccurs="12" type="xs:unsignedInt"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
</xs:element>

And here is my xml file:

<test_data>
    <a>100</a>
    <b>2</b>
    <c>1</c>
    <parameters>1</parameters>
    <parameters>2</parameters>
    <parameters>3</parameters>
    <parameters>4</parameters>
    <parameters>5</parameters>
    <parameters>6</parameters>
    <parameters>7</parameters>
    <parameters>8</parameters>
    <parameters>9</parameters>
    <parameters>10</parameters>
    <parameters>11</parameters>
    <parameters>12</parameters>
</test_data>

I am expecting after the readXml function call, the "parameters" is part of the test_data table.

TableName: test_data
 100     2   1  1   2  3  4  5  6  7  8  9  10  11  12

Does anyone knows what's wrong?

A: 

Using a DataSet limits you to XML Schemas that map to the relational model. This will sometimes not be what you expect.

I recommend that you create a DataSet, either manually, or with the DataSet Designer in Visual Studio, that you believe most closely matches the data you're working with. Then either look at the resulting XSD or use DataSet.WriteXmlSchema to write the schema to a file. Look at the file - that's the XML schema you should use.

I don't think you'll get it to accept complexContent or even extension.

John Saunders