myXmlDataDoc.DataSet.ReadXml问题

时间:2010-05-28 01:01:08

标签: c# xml

我正在使用

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

使用以下命令填充通过读取xml架构创建的数据集中的表:

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

我遇到的问题是读取xml标签:

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

readXml函数将元素放在不同的表中,表中的所有内容都为0。这是数据表的打印输出:

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

在我的xsd文件中,我使用以下代码表示数组:

<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>

这是我的xml文件:

<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>

我期待在readXml函数调用之后,“参数”是test_data表的一部分。

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

有谁知道什么是错的?

1 个答案:

答案 0 :(得分:0)

使用DataSet将您限制为映射到关系模型的XML架构。这有时不符合您的期望。

我建议您手动创建DataSet,或者使用Visual Studio中的DataSet Designer创建一个您认为与您正在使用的数据最匹配的DataSet.WriteXmlSchema。然后查看生成的XSD或使用complexContent将模式写入文件。查看文件 - 这是您应该使用的XML模式。

我认为你不会接受{{1}}甚至延期。