Загрузите несколько строк для последовательности XSD в DataSet - PullRequest
0 голосов
/ 24 октября 2019

Мне нужно расширить существующее приложение для поддержки импорта списка элементов вместо одного на сегодняшний день.

Тестирующее приложение загружает 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

Любые подсказки / справки будуточень ценится.

...