2017-10-09 5 views
0

xmlからjson形式へデータを変換しようとしています。そのために、xml出力からxsdスキーマを作成してxmlからjsonにデータを変換しています。続きXMLからJSON形式にデータを変換する際のXSDスキーマの問題

は、私は上記のXMLから定義されていると私は別のエラーのそれぞれについてを取得していますという二つの異なるXSDスキーマのある後JSON

<?xml version="1.0" encoding="UTF-8"?> 
    <SyncData> 
    <Employerid>12345</Employerid> 
    <ImporterEmail>[email protected]</ImporterEmail> 
    <ReportEmail>[email protected]</ReportEmail> 
    <Employees> 
    <wd:WorkerSummary xmlns:is="java:com.workday.esb.intsys.xpath. 
    ParsedIntegrationSystemFunctions" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xdiff="urn:com.workday/esb/xdiff" xmlns:wd="urn:com.workday/bsvc"> 
    <wd:ReferenceID/> 
    <wd:Name>abcdef,ghijklm</wd:Name> 
    <wd:Title/> 
    <wd:EmployeeId>JG00889</wd:EmployeeId> 
    <wd:EMail>[email protected]</wd:EMail>               
    <wd:AddressLine1>1400 Post Alm Tyui</wd:AddressLine1>       
    <wd:City>Bostonn</wd:City>                     
    <wd:State>MC</wd:State>                      
    <wd:Zip>11067</wd:Zip>                    
    <wd:Country>AUS</wd:Country>                    
    </wd:WorkerSummary>                              
    </Employees>                                
    </SyncData> 

に変換する必要が私のxmlです。

<?xml version="1.0" encoding="UTF-8"?>               
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.your-company.com/WorkermapSchema" 
    xmlns:tns="http://www.your-company.com/WorkermapSchema" 
    elementFormDefault="qualified">                  
    <xs:element name="WorkerSummary">            
    <xs:complexType>                      
    <xs:sequence>                          
    <xs:element type="xs:string" name="ReferenceID" />          
    <xs:element type="xs:string" name="Name" />              
    <xs:element type="xs:string" name="Title" />              
    <xs:element type="xs:string" name="EmployeeId" />           
    <xs:element type="xs:string" name="EMail" />             
    <xs:element type="xs:string" name="AddressLine1" />           
    <xs:element type="xs:string" name="City" />              
    <xs:element type="xs:string" name="State" />              
    <xs:element type="xs:string" name="Zip" />               
    <xs:element type="xs:string" name="Country" />           
    </xs:sequence>                      
    </xs:complexType>                       
    </xs:element>                           
    </xs:schema> 

私はこのスキーマになっていたエラーは以下の通りである

com.workday.esb.xmltojson.XmlToJsonException:ルート要素があるので、 "SyncData"

を発見していないタイプ上記のエラーは、ルート要素 "SyncData"が見つかりません、私は次のようにルート要素とは別の方法でスキーマを定義しようとしました。

<?xml version="1.0" encoding="utf-8"?> 
    <xs:schema id="NewDataSet" xmlns="" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas- 
    microsoft-com:xml-msdata" xmlns:app1="urn:com.workday/bsvc"> 
    <xs:import namespace="urn:com.workday/bsvc"></xs:import> 
    <xs:element name="SyncData"> 
    <xs:complexType> 
    <xs:sequence> 
    <xs:element name="Employerid" type="xs:string" minOccurs="0" /> 
    <xs:element name="ImporterEmail" type="xs:string" minOccurs="0" /> 
    <xs:element name="ReportEmail" type="xs:string" minOccurs="0" /> 
    <xs:element name="Employees" minOccurs="0" maxOccurs="unbounded"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="WorkerSummary" type="xs:string"/> 
      <xs:element name="ReferenceID" type="xs:string"/>    
     </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
    </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="NewDataSet" msdata:IsDataSet="true" 
    msdata:UseCurrentLocale="true"> 
    <xs:complexType> 
    <xs:choice minOccurs="0" maxOccurs="unbounded"> 
    <xs:element ref="SyncData" /> 
    </xs:choice> 
    </xs:complexType> 
</xs:element> 
</xs:schema> 

上記のXSDスキーマを使用した後、エラーは以下の通りですが、私はルート要素「SyncData」に関連したエラーを取得していないのですが、私はそれが何であるか理解していないのです別のエラーを取得しています。

org.codehaus.stax2.typed.TypedXMLStreamException:ParseErrorですで[行、列]:[2359]のメッセージ:型付きアクセス方法

を使用するときに要素内容が子START_ELEMENTを含めることはできませんものはありますスキーマが間違っている、またはエラーは何についてですか?

私はxsdスキーマに対して必要なときに完全に実行しようと試みましたが、何かが不足していると思われています。

+0

あなたは、各スキーマ内の1が欠落している使用することができます。第1のスキーマでWorkerSummaryが正しくなっている間は、間違っていて単純な要素にして、2番目のスキーマのオブジェクトではないようにしました。 ''これは子要素を含むことができないことを意味します。 – Optional

+0

あなたの素早い応答のためにたくさんありがとう、私は第1のスキーマで要素 "SyncData"を言及しようとしましたが、そうすることができませんでしたので、私はそれを行うことができませんでした。そして私は第2のスキーマでWorkerSummary要素を追加しようとしました。要素タイプ "xs:element"は、一致する終了タグ ""で終了する必要があります。 –

+0

基本的に2つのスキーマを含める必要があります。それを答えとして投稿させてください。 – Optional

答えて

0

あなたはこのスキーマ

<?xml version="1.0" encoding="utf-16"?> 
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="SyncData"> 
    <xsd:complexType> 
     <xsd:sequence> 
     <xsd:element name="Employerid" type="xsd:int" /> 
     <xsd:element name="ImporterEmail" type="xsd:string" /> 
     <xsd:element name="ReportEmail" type="xsd:string" /> 
     <xsd:element name="Employees"> 
      <xsd:complexType> 
      <xsd:sequence> 
       <xsd:element name="wd:WorkerSummary"> 
       <xsd:complexType> 
        <xsd:sequence> 
        <xsd:element name="wd:ReferenceID" type="xsd:string" /> 
        <xsd:element name="wd:Name" type="xsd:string" /> 
        <xsd:element name="wd:Title" type="xsd:string" /> 
        <xsd:element name="wd:EmployeeId" type="xsd:string" /> 
        <xsd:element name="wd:EMail" type="xsd:string" /> 
        <xsd:element name="wd:AddressLine1" type="xsd:string" /> 
        <xsd:element name="wd:City" type="xsd:string" /> 
        <xsd:element name="wd:State" type="xsd:string" /> 
        <xsd:element name="wd:Zip" type="xsd:int" /> 
        <xsd:element name="wd:Country" type="xsd:string" /> 
        </xsd:sequence> 
       </xsd:complexType> 
       </xsd:element> 
      </xsd:sequence> 
      </xsd:complexType> 
     </xsd:element> 
     </xsd:sequence> 
    </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 
+0

すべての要素名からwd:を削除した後に実行されているようです。また、エラーjava.lang.NumberFormatExceptionが表示されます。しかし、私は要素EmployeridとZipを参照してください、要素型は整数として与えられています。どの要素がこれを引き起こしているのかわからない、提案してください。 –

+0

まず文字列に変換してみてください。 – Optional

関連する問題