Мне нужно расширить существующее приложение для поддержки импорта списка элементов вместо одного на сегодняшний день.
Тестирующее приложение загружает XSD и читает XML с
class Program
{
private static string xmlFilePath = @"C:\tmp\index\data-minimal.xml";
private static string xsdFilePath = @"C:\tmp\index\schema-minimal.xsd";
static void Main(string[] args)
{
//define dataSet
var ds = new DataSet();
// Read XSD
ds.ReadXmlSchema(xsdFilePath);
//load xmlFile into dataSet
ds.ReadXml(xmlFilePath);
}
}
}
Это образец xml импорта, уменьшенный до минимума:
<?xml version="1.0" encoding="utf-8"?>
<PRODUCTS xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<PRD>
<PRDNO>30</PRDNO>
<TRE>
<TRCD>1395</TRCD>
<TRCD>199</TRCD>
<TRCD>433</TRCD>
</TRE>
</PRD>
</PRODUCTS>
Моя цель - получить следующую структуру и содержимое в таблице TRE:
ПРДНО |TRCD
30 |199
30 |1390
30 |433
Я пробовал использовать следующий xsd:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="PRODUCTS">
<xs:complexType>
<xs:sequence>
<xs:element name="PRD" nillable="false" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="PRDNO" type="xs:int" nillable="false">
</xs:element>
<xs:element name="TRE" nillable="false" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="TRCD" minOccurs="0" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="75"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
, но у него есть две проблемы:
PRD_Id |TRCD
0 |1395
- Включен только первый TRCD
- Таблица TRE имеет столбец PRD_Id вместо PRDNO
Любые подсказки / справки будуточень ценится.