c# - 为什么在 C# 中使用 ReadXml 加载的 DataSet 是空的?

标签 c# xml dataset

我正在使用 C# 4.5/Visual Studio 2012 尝试将 XML 文件加载到数据集。我在这里阅读了说明:

http://msdn.microsoft.com/en-us/library/fx29c3yd.aspx

我正在加载一个如下所示的 XML 文件:

<?xml version="1.0" encoding="utf-8" ?>

<UnitTestDataSet xmlns="https://rebuildinghomes.codeplex.com/" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="https://rebuildinghomes.codeplex.com/ UnitTestLoadData.xsd">
  <Person>
    <PersonId>1111</PersonId>
    <FirstName>Unit</FirstName>
    <LastName>Tester</LastName>
  </Person>
</UnitTestDataSet>

使用这样的模式:

<?xml version="1.0" encoding="utf-8" ?>

<xs:schema id="RebuildingUnitTestData"
            targetNamespace="https://rebuildinghomes.codeplex.com/"
            xmlns:u="https://rebuildinghomes.codeplex.com/"
            elementFormDefault="qualified"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:complexType name="PersonType">
    <xs:sequence>
      <xs:element name="PersonId" type="xs:int"
                   minOccurs="1" maxOccurs="1" />
      <xs:element name="FirstName" type="xs:string"
                   minOccurs="1" maxOccurs="1" />
      <xs:element name="LastName" type="xs:string"
                   minOccurs="1" maxOccurs="1" />
    </xs:sequence>
  </xs:complexType>
</xs:schema>

使用以下 C# 代码:

        //Load init/expected
        DataSet init = new DataSet();

        init.ReadXmlSchema("RebuildingModel/Data/UnitTestLoadData.xsd");

        init.ReadXml("RebuildingModel/Data/PersonUnitTest.xml", XmlReadMode.ReadSchema);

但是,当我在调试器中查看“init”时,DataSet 是空的。我做错了什么?

最佳答案

遗憾的是,您的代码片段似乎可以在我的机器上运行。您确定要检查 init AFTER init.ReadXml() 语句执行吗?

在下面的 Visual Studio 即时窗口中查看我的输出:

ds.Tables[0]
{Person}
    base {System.ComponentModel.MarshalByValueComponent}: {Person}
    CaseSensitive: false
    ChildRelations: {System.Data.DataRelationCollection.DataTableRelationCollection}
    Columns: {System.Data.DataColumnCollection}
    Constraints: {System.Data.ConstraintCollection}
    DataSet: {System.Data.DataSet}
    DefaultView: {System.Data.DataView}
    DisplayExpression: ""
    ExtendedProperties: Count = 0
    HasErrors: false
    IsInitialized: true
    Locale: {en-US}
    MinimumCapacity: 50
    Namespace: "https://rebuildinghomes.codeplex.com/"
    ParentRelations: {System.Data.DataRelationCollection.DataTableRelationCollection}
    Prefix: ""
    PrimaryKey: {System.Data.DataColumn[0]}
    RemotingFormat: Xml
    Rows: {System.Data.DataRowCollection}
    Site: null
    TableName: "Person"
ds.Tables[0].Rows
{System.Data.DataRowCollection}
    base {System.Data.InternalDataCollectionBase}: {System.Data.DataRowCollection}
    Count: 1

根据您的 XML,我的数据集填充了一个包含单行的表。

关于c# - 为什么在 C# 中使用 ReadXml 加载的 DataSet 是空的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19013252/

相关文章:

Python直接从网址解析xml

c# - 在 Sharepoint : ReadXml fails while WriteXml works flawlessly 上存储数据集

c# - Dataset Designer.cs 在 VS2013 中从 SVN 获取更新后生成 Designer1.cs

dataset - Letor数据集格式

c# - 使 DateTimePicker 仅在 WinForms 中用作 TimePicker

c# - 发件人未收到 UDP 广播

c# - Entity Framework 抛出错误 "Unable to evaluate the expression. Operation not supported. Unknown error: 0x80070057."

c# - 从静态方法中使用 IoC 容器解析类型

PHP 将节点添加到现有的 xml 文件并保存

java - 将java对象转换为动态xml