2012-03-30 8 views
1

C#で可能であると私の知る限り、スキーマを保持するxmlファイルとjavaを使用するxmlデータを生成したいそれは可能なJavaで???インラインスキーマ定義でxmlを生成するJava APIがありますか

私のXMLファイルは以下のようになります。

<transaction> 
    <xs:schema id="transaction" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
    <xs:element name="transaction" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
     <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
      <xs:element name="id"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element name="in" type="xs:string" minOccurs="0" /> 
       <xs:element name="sn" type="xs:string" minOccurs="0" /> 
       <xs:element name="book" type="xs:string" minOccurs="0" /> 
       <xs:element name="author" type="xs:string" minOccurs="0" /> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
      <xs:element name="data"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element name="dateTime" type="xs:dateTime" minOccurs="0" /> 
       <xs:element name="key" type="xs:string" minOccurs="0" /> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
      <xs:element name="productData"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element name="dateTime" type="xs:dateTime" minOccurs="0" /> 
       <xs:element name="key" type="xs:string" minOccurs="0" /> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
     </xs:choice> 
     </xs:complexType> 
    </xs:element> 
    </xs:schema> 
    <id> 
    <in>computer</in> 
    <sn>1234567</sn> 
    <book>JAVA</book> 
    <author>klen</author> 
    </id> 
    <data> 
    <dateTime>2011-06-24T17:08:36.3727674+05:30</dateTime> 
    <key>Err</key> 
    </data> 
</transaction> 

私のxmlファイルにはデータとスキーマが含まれていますが、このタイプのファイルをjavaを使用してスキーマから生成する必要があります。

私はJAXBを使用してXML部分を作成することができますし、自分のコードの主要な部分は

として
Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); 
     jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,true); 
      jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT,true); 
     jaxbMarshaller.marshal(transaction, file); 
     jaxbMarshaller.marshal(transaction, System.out); 

のように見えるが、私は私のxmlファイルにインラインXMLスキーマの部分を追加することはできませんです。

@jtahlborn大丈夫私は助けてくれてありがとう、それを掘り下げようとします。私はstaxがdomよりもXML書き込みに優れていると聞いたので、名前空間などを設定することが可能ですもの。私は別の質問があることは、jaxbがxmlをxmlスキーマ(unマーシャリング)に変換し、xmlスキーマをxml(マーシャリング)に変換するだけで、xmlファイルを記述する必要がある場合、jaxb [DOM、STAX(stream )、SAX(ストリームのみの読み取り)]である。

+0

主な質問は何ですか?何を試しましたか? – Coffee

+0

Google for JAXP – Josh

+0

@Adel生成されたXMLファイルにスキーマを追加したいのですが、C#で可能ですが、javaでも可能です。 –

答えて

1

あなたはなります

  1. 新しいDOM文書(例えば "にルートノードを追加し、新しいDOMドキュメント
  2. を作成
  3. (例えば、スキーマファイルを解析)スキーマからDOMドキュメントを作成しますトランザクション ")
  4. "トランザクション "要素の最初の子として手順1のスキーマ文書を追加します
  5. "トランザクション "要素の後続の子として実際の文書データを追加します

代わりに、あなたは「メイン」のXML出力を生成するためにJAXBを使用したい場合は、次のことができます(スキーマから作成された)

  1. 移入JAXBモデルへ
  2. マーシャルJAXBモデルDOM文書を作成する
  3. あなたのスキーマからDOM文書を作成します。 (いくつかのJAXBコンフィグトリックで、あなたはおそらく、あなたの取引を得ることができ、あなたのDOM文書

の「トランザクション」要素の最初の子としてのステップ3からスキーマ文書を挿入

  • )スキーマファイルを解析モデルに要素「スキーマ」プロパティが設定されている場合、解析されたスキーマドキュメントからそのプロパティを設定し、一度にモデル全体をマーシャリングすることができます)

  • +0

    それはC#のような簡単な方法でそれを行うことは非常に退屈な仕事isnotです.JaxbまたはJavaの他のAPIを使用して? –

    +0

    @moin - 私はC#を知らないので、 "C#のような"という意味は分かりません。 Javaでxmlを生成する方法はさまざまですが、詳細がなければ、C#およびJavaの専門家だけがおそらくよりターゲットを絞ったアドバイスを与えることができます。 – jtahlborn

    +0

    yeap実際に私はjaxbや他のAPIを使ってJavaのインラインスキーマを持つxmlファイルを生成できますか?実際にはサイズが非常に大きい元のxmlファイルを表示していないので、手動でXMLでノードを手動でコーディングするので、xmlファイルがインラインスキーマで生成されるこのタイプのapiが必要です。set()メソッドを使用してノードの値を設定するだけですか? –

    関連する問題