我必须扩展现有应用程序以支持导入元素列表,而不是今天的单个元素。
测试应用程序加载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表中获得以下结构和内容:
PRDNO | 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
任何提示/帮助将不胜枚举。