【发布时间】:2013-10-01 12:53:13
【问题描述】:
我正在使用 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 是空的。我做错了什么?
【问题讨论】:
-
我运行了你的代码,它似乎可以工作。数据集是空的,数据集中没有表是什么意思?
-
有趣,这对我也不起作用。只有当我在您的示例中将 XmlReadMode 更改为 XmlReadMode.Auto 时,该表才会填充到数据集中。