我正在使用
myXmlDataDoc.DataSet.ReadXml(xml_file_name, XmlReadMode.InferSchema);要在通过读取xml架构创建的dataset中填充表,请执行以下操作:
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函数调用之后,"parameters“是test_data表的一部分。
TableName: test_data
100 2 1 1 2 3 4 5 6 7 8 9 10 11 12有人知道哪里出问题了吗?
发布于 2010-05-28 09:54:22
使用DataSet限制您只能使用映射到关系模型的XML。这有时并不是您所期望的。
我建议您手动创建一个DataSet,或者使用Visual Studio中的DataSet设计器创建一个您认为与您正在处理的数据最接近的a。然后查看生成的XSD或使用DataSet.WriteXmlSchema将模式写入文件。看看这个文件--这就是您应该使用的XML模式。
我不认为你会让它接受complexContent,甚至扩展。
https://stackoverflow.com/questions/2926058
复制相似问题