我正在使用
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
有谁知道什么是错的?
答案 0 :(得分:0)
使用DataSet
将您限制为映射到关系模型的XML架构。这有时不符合您的期望。
我建议您手动创建DataSet
,或者使用Visual Studio中的DataSet Designer创建一个您认为与您正在使用的数据最匹配的DataSet.WriteXmlSchema
。然后查看生成的XSD或使用complexContent
将模式写入文件。查看文件 - 这是您应该使用的XML模式。
我认为你不会接受{{1}}甚至延期。