Я хочу прочитать некоторые данные XML в DataTable - используя метод ReadXml
, например,
var dataTable = new DataTable();
XmlReader xmlReader = XmlReader.Create(new StringReader(xmlString));
dataTable.ReadXml(xmlReader);
См. Ниже строку XML. XML включает в себя определение схемы, и все в порядке, когда данные не имеют пространства имен (т.е. находятся в глобальном пространстве имен), но я не могу понять, как указать схему и XML так, чтобы элементы данных XML находились в другом пространстве имен.
Исключение, которое я получаю: «DataTable« cd: Motorcycles »не соответствует ни одной DataTable в источнике».
Я знаю, что делаю какую-то действительно глупую ошибку для школьника, но я вырывал свои волосы в течение часа или около того - возился без успеха.
Может ли кто-нибудь избавить меня от страданий?
XML, который работает
<NewDataSet xmlns="">
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Motorcycles" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Motorcycles">
<xs:complexType>
<xs:sequence>
<xs:element name="Manufacturer" type="xs:string" minOccurs="0" />
<xs:element name="PercentageOfRiders" type="xs:int" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<Motorcycles>
<Manufacturer>Honda</Manufacturer>
<PercentageOfRiders>23</PercentageOfRiders>
</Motorcycles>
<Motorcycles>
<Manufacturer>Yamaha</Manufacturer>
<PercentageOfRiders>15</PercentageOfRiders>
</Motorcycles>
<Motorcycles>
<Manufacturer>Suzuki</Manufacturer>
<PercentageOfRiders>16</PercentageOfRiders>
</Motorcycles>
<Motorcycles>
<Manufacturer>BMW</Manufacturer>
<PercentageOfRiders>6</PercentageOfRiders>
</Motorcycles>
<Motorcycles>
<Manufacturer>Other</Manufacturer>
<PercentageOfRiders>40</PercentageOfRiders>
</Motorcycles>
</NewDataSet>
XML с пространством имен (не работает)
<cd:NewDataSet xmlns="urn:ChartData" xmlns:cd="urn:ChartData">
<xs:schema id="NewDataSet"
targetNamespace="urn:ChartData"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
elementFormDefault="qualified">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="cd:Motorcycles" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Motorcycles">
<xs:complexType>
<xs:sequence>
<xs:element name="Manufacturer" type="xs:string" minOccurs="0" />
<xs:element name="PercentageOfRiders" type="xs:int" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<cd:Motorcycles>
<cd:Manufacturer>Honda</cd:Manufacturer>
<cd:PercentageOfRiders>23</cd:PercentageOfRiders>
</cd:Motorcycles>
<cd:Motorcycles>
<cd:Manufacturer>Yamaha</cd:Manufacturer>
<cd:PercentageOfRiders>15</cd:PercentageOfRiders>
</cd:Motorcycles>
<cd:Motorcycles>
<cd:Manufacturer>Suzuki</cd:Manufacturer>
<cd:PercentageOfRiders>16</cd:PercentageOfRiders>
</cd:Motorcycles>
<cd:Motorcycles>
<cd:Manufacturer>BMW</cd:Manufacturer>
<cd:PercentageOfRiders>6</cd:PercentageOfRiders>
</cd:Motorcycles>
<cd:Motorcycles>
<cd:Manufacturer>Other</cd:Manufacturer>
<cd:PercentageOfRiders>40</cd:PercentageOfRiders>
</cd:Motorcycles>
</cd:NewDataSet>