现有一架构文件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>

解决方案 »

  1.   

    有些order.xml中的内容很多(节点、属性),订单明细也有很多条。
    由于内容字节数受限制,不能发完整的XSD,请高手帮忙提供思路。
    分不够,我再开帖子。先谢谢大家了。有可以帮忙的朋友,请留一下email,我将把完整的XSD文件发给你,以帮我思考。
      

  2.   

    读取出 nodename,nodevalue  有什么就读什么
      

  3.   

    只要符合xml规范,读法都是一样的