现有一架构文件b2bOptic.xsd和订单文件Order.xml,XSD文件中定义了XML中所有可能出现的内容结构,但每次的ORDER.XML内容都不完全相同,但结构受XSD约束的,请问这样的XML如何读取,最终写入到数据库表中去。
// b2bOptic.xsd内容片段如下(因文件内容太多,只能复制部分)
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2006 sp2 U bearbeitet (http://www.altova.com) von Gerd Bernau (COMCEPT GmbH) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.5.0">
<xs:element name="b2bOptic">
<xs:complexType>
<xs:sequence>
<xs:element name="header" type="Header"/>
<xs:element name="items">
<xs:complexType>
<xs:sequence>
<xs:element name="item" type="Item" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="experimental" type="xs:anyType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="AngleDimension">
<xs:restriction base="xs:string">
<xs:enumeration value="DEG"/>
<xs:enumeration value="RAD"/>
<xs:enumeration value="MM"/>
</xs:restriction>
</xs:simpleType>
....
</xs:schema>//某次的Order.xml如下:
<?xml version="1.0" encoding="UTF-8" ?>
<b2bOptic>
<header msgType="ORDER" msgState="NEW" testIndicator="false">
<cultureId>AT</cultureId>
<customersOrderId>25691</customersOrderId>
<distributorsOrderId>999999</distributorsOrderId>
<timeStamps>
<dateTime step="CREATE">2007-10-02T13:11:10.0Z</dateTime>
</timeStamps>
<orderParties role="ORIGINATOR">
<id>25691</id>
</orderParties>
<software typeOf="ORIGINATOR">
<name>TestCreator</name>
<version>V1.0</version>
</software>
<software typeOf="SENDER">
<name>TestCreator</name>
<version>V1.0</version>
</software>
<productCatalog>
<name>TestCreator</name>
<version></version>
<release></release>
</productCatalog>
<portalOrderId>25691</portalOrderId>
</header>
<items>
<item>
<re>Comment</re>
<parties role="ORIGINATOR">
<id memberShipID=""/>
</parties>
<referenceNo>1035888</referenceNo>
<deliveryMethod></deliveryMethod>
<manufacturer>Optixx</manufacturer>
<pair thicknessMatching="0" weightMatching="false" prismMatching="false" baseMatching="false">
<patient>
<id>1</id>
</patient>
<lens side="RIGHT" balancingLens="0" virtualLens="false" quantity="1">
<commercialCode>L15SSH</commercialCode>
<rxData>
<sphere>-1.75</sphere>
<cylinder>
<power>+0.25</power>
<base>120</base>
</cylinder>
</rxData>
<coating coatingType="">
<commercialCode>OSS</commercialCode>
</coating>
<geometry>
<diameter>
<physical>70</physical>
</diameter>
</geometry>
</lens>
<lens side="LEFT" balancingLens="0" virtualLens="false" quantity="1">
<commercialCode>L15SSH</commercialCode>
<rxData>
<sphere>-2.00</sphere>
<cylinder>
<power>+0000</power>
<base>0</base>
</cylinder>
</rxData>
<coating coatingType="">
<commercialCode>OSS</commercialCode>
</coating>
<geometry>
<diameter>
<physical>70</physical>
</diameter>
</geometry>
</lens>
</pair>
</item>
</items>
</b2bOptic>
// b2bOptic.xsd内容片段如下(因文件内容太多,只能复制部分)
<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2006 sp2 U bearbeitet (http://www.altova.com) von Gerd Bernau (COMCEPT GmbH) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.5.0">
<xs:element name="b2bOptic">
<xs:complexType>
<xs:sequence>
<xs:element name="header" type="Header"/>
<xs:element name="items">
<xs:complexType>
<xs:sequence>
<xs:element name="item" type="Item" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="experimental" type="xs:anyType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="AngleDimension">
<xs:restriction base="xs:string">
<xs:enumeration value="DEG"/>
<xs:enumeration value="RAD"/>
<xs:enumeration value="MM"/>
</xs:restriction>
</xs:simpleType>
....
</xs:schema>//某次的Order.xml如下:
<?xml version="1.0" encoding="UTF-8" ?>
<b2bOptic>
<header msgType="ORDER" msgState="NEW" testIndicator="false">
<cultureId>AT</cultureId>
<customersOrderId>25691</customersOrderId>
<distributorsOrderId>999999</distributorsOrderId>
<timeStamps>
<dateTime step="CREATE">2007-10-02T13:11:10.0Z</dateTime>
</timeStamps>
<orderParties role="ORIGINATOR">
<id>25691</id>
</orderParties>
<software typeOf="ORIGINATOR">
<name>TestCreator</name>
<version>V1.0</version>
</software>
<software typeOf="SENDER">
<name>TestCreator</name>
<version>V1.0</version>
</software>
<productCatalog>
<name>TestCreator</name>
<version></version>
<release></release>
</productCatalog>
<portalOrderId>25691</portalOrderId>
</header>
<items>
<item>
<re>Comment</re>
<parties role="ORIGINATOR">
<id memberShipID=""/>
</parties>
<referenceNo>1035888</referenceNo>
<deliveryMethod></deliveryMethod>
<manufacturer>Optixx</manufacturer>
<pair thicknessMatching="0" weightMatching="false" prismMatching="false" baseMatching="false">
<patient>
<id>1</id>
</patient>
<lens side="RIGHT" balancingLens="0" virtualLens="false" quantity="1">
<commercialCode>L15SSH</commercialCode>
<rxData>
<sphere>-1.75</sphere>
<cylinder>
<power>+0.25</power>
<base>120</base>
</cylinder>
</rxData>
<coating coatingType="">
<commercialCode>OSS</commercialCode>
</coating>
<geometry>
<diameter>
<physical>70</physical>
</diameter>
</geometry>
</lens>
<lens side="LEFT" balancingLens="0" virtualLens="false" quantity="1">
<commercialCode>L15SSH</commercialCode>
<rxData>
<sphere>-2.00</sphere>
<cylinder>
<power>+0000</power>
<base>0</base>
</cylinder>
</rxData>
<coating coatingType="">
<commercialCode>OSS</commercialCode>
</coating>
<geometry>
<diameter>
<physical>70</physical>
</diameter>
</geometry>
</lens>
</pair>
</item>
</items>
</b2bOptic>
由于内容字节数受限制,不能发完整的XSD,请高手帮忙提供思路。
分不够,我再开帖子。先谢谢大家了。有可以帮忙的朋友,请留一下email,我将把完整的XSD文件发给你,以帮我思考。