0

SSISを使用してXMlファイルを読み込もうとしています。サンプルXMLと対応するXSDがあります。

私のSSISパッケージXMLSoruceで、入力XMLファイルパスとXSDパスを指定しました。列を表示しようとすると、次のエラーが発生していました。

コンポーネント「XMLソース」はXMLデータを処理できませんでした。あいまいな複合型の定義。要素「childusages」には、「usages」という名前の複数のメンバーがあります

そして、XMLと対応するXSDを.Net(C#またはVB)で検証しようとしましたが、検証に合格しました。

サンプルXMLファイル:

<gmx-rcc>
 <statement>
  <summaryAccountName>test test</summaryAccountName>
  <accounts>
   <account>
    <accountnumber>abcdefghijk</accountnumber>
    <meters>
     <meter>
      <mnumber>a123456</mnumber>
      <usages>
       <usage>
       <actualUsage>1234</actualUsage>
       <childUsages>
        <usage><actualUsage>1234</actualUsage></usage>
        <usage><actualUsage>1234</actualUsage></usage>
        <usage><actualUsage>1234</actualUsage></usage>
       </childUsages>
       </usage>
      </usages>
     </meter>
    </meters>
   </account>
  </accounts>
 </statement>
 </gmx-rcc>

対応するXSD:

<xsd:schema elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <xsd:element name="gmx-rcc">
  <xsd:complexType >
   <xsd:sequence maxOccurs="unbounded" minOccurs="0">
    <xsd:element type="statement" name="statement"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
 <xsd:complexType name="statement" >
  <xsd:choice maxOccurs="unbounded" minOccurs="0">
   <xsd:element name="summaryAccountName" type="xsd:string"/>
   <xsd:element ref="accounts"/>
  </xsd:choice>
 </xsd:complexType>
 <xsd:element name="accounts">
  <xsd:complexType>
   <xsd:sequence maxOccurs="unbounded" minOccurs="0">
    <xsd:element name="account" type="account"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
 <xsd:complexType name="account" >
  <xsd:choice maxOccurs="unbounded" minOccurs="0">
   <xsd:element name="accountnumber" type="xsd:string"/>
   <xsd:element ref="meters"/>
  </xsd:choice>
 </xsd:complexType>
 <xsd:element name="meters">
  <xsd:complexType>
   <xsd:sequence maxOccurs="unbounded" minOccurs="0">
    <xsd:element name="meter" type="meter"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
 <xsd:complexType name="meter" >
  <xsd:choice maxOccurs="unbounded" minOccurs="0">
   <xsd:element name="mnumber" type="xsd:string"/>
   <xsd:element ref="usages"/>
  </xsd:choice>
 </xsd:complexType>
 <xsd:element name="usages">
  <xsd:complexType>
   <xsd:sequence maxOccurs="unbounded" minOccurs="0">
    <xsd:element name="usage" type="usage"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
 <xsd:complexType name="usage" >
  <xsd:choice maxOccurs="unbounded" minOccurs="0">
   <xsd:element name="actualUsage" type="xsd:decimal"/>
   <xsd:element ref="childUsages"/>
  </xsd:choice>
 </xsd:complexType>
 <xsd:element name="childUsages">
  <xsd:complexType >
   <xsd:sequence maxOccurs="unbounded" minOccurs="0">
    <xsd:element name="usage" type="usage"/>
   </xsd:sequence>
  </xsd:complexType>
 </xsd:element>
 </xsd:schema>
4

1 に答える 1

0

XSDにカスタムType(この場合はname = "account" type = "account" )が含まれているかどうかをSSISソースコンポーネントが理解できないと思います。

ただし、XSLTを使用して簡単な手順でXMLを解析できます。

  1. XMLタスクを使用してXMLとXSDを検証します
  2. xmlデータを単純化してからxmlソースに渡すXSLT操作。

例を参照してください:

http://www.rad.pasfu.com/index.php?/archives/21-XML-Task-Changing-Style-of-Data-XSLT.html

-Vinay

于 2012-09-17T23:27:37.717 に答える