C# 如何在xmlDataDocument.DataSet中填充表

C# 如何在xmlDataDocument.DataSet中填充表,c#,xml,dataset,C#,Xml,Dataset,我正在开发一个C应用程序,它使用XML模式文件作为消息定义的数据库,使用XML文件作为消息数据的数据库 我遵循我发现的例子: 我编写了自己的xsd和XML文件。我在示例中使用了相同的方法,读取xsd文件,然后加载 xml文件。但是我没有为我的数据表创建任何行。我使用调试器逐步检查我的代码。当我使用xmlDataDocument.DataSet.Tables[表格名称]获取我的DataTable时,该表格的Rows属性为0 有人知道在我用XML文件加载xmlDataDocument后,数据集表无法

我正在开发一个C应用程序,它使用XML模式文件作为消息定义的数据库,使用XML文件作为消息数据的数据库

我遵循我发现的例子:

我编写了自己的xsd和XML文件。我在示例中使用了相同的方法,读取xsd文件,然后加载 xml文件。但是我没有为我的数据表创建任何行。我使用调试器逐步检查我的代码。当我使用xmlDataDocument.DataSet.Tables[表格名称]获取我的DataTable时,该表格的Rows属性为0

有人知道在我用XML文件加载xmlDataDocument后,数据集表无法填充的原因吗

以下是XSD文件的一个片段:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="test"
    targetNamespace="http://tempuri.org/test.xsd"
      elementFormDefault="qualified"
    xmlns="http://tempuri.org/test.xsd"
    xmlns:mstns="http://tempuri.org/test.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>

<xs:element name="reboot_msg">
    <xs:complexType>
      <xs:complexContent>
        <xs:extension base="header_s">
          <xs:sequence>

           <xs:element name="que_name">
            <xs:simpleType>
             <xs:restriction base="xs:string">
              <xs:minLength value="4"/>
               <xs:maxLength value="8"/>
              </xs:restriction>
             </xs:simpleType>
            </xs:element>

        <xs:element name="priority" type="xs:unsignedShort"/>

          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
  </xs:element>
下面是XML文件的一个片段:

<?xml version="1.0" standalone="yes"?>
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >

  <reboot_msg>
    <message_length>16</message_length>
    <message_type>7</message_type>
    <message_sequence>0</message_sequence>
    <que_name>NONE</que_name>
    <priority>5</priority>
  </reboot_msg>
可能是我创建的XML和XSD文件遗漏了什么。请帮忙


感谢将XML模式与XmlDataDocument一起使用,您应该只在数据集设计器中创建模式。XmlDataDocument和DataSet通常只能处理XML模式的一个子集。为了确保您的模式只使用该子集,您应该使用数据集设计器创建它。

XmlDataDocument现在不推荐使用。

尽可能使用XmlDocument。


使用DataSet.ReadXml,DataSet.ReadSchema。

John,谢谢你的回答。你能给我指一份更能说明这一点的文件吗?什么是XML模式的子集。我使用visual studio 2008在我的项目中添加了一个新的xsd文件,从而创建了xsd文件。@alex:我怀疑是否有文档-XmlDataDocument甚至在.NET 4.0中被弃用。作为一个示例,考虑数据集设计器只生成可映射到数据集所使用的关系结构的XSD。这意味着没有xs:choice,没有类型被多个父类型用作子类型,等等。这些都是数据集无法使用的完全有效的XML模式特性。我已经解决了。我没有使用xmlDataDocument.load函数来加载xml文件,而是使用XmlDataDoc.DataSet.ReadXmlxml_文件名xmldreadmode.InferSchema。现在我可以看到为数据集中的表创建的新行。