2017-10-17 32 views
0

私はXMLとXSLTを持っています。 変換は現在かなりうまく機能しています。XSLT 3.0、XMLからJSONへの変換

このXSLTをJSONの結果に拡張するにはどうすればよいですか?

最初のXSLTのXML結果をJSONに変換するための独立したXSTLでも可能です。 それから、私はJavaで両方を連鎖します。

ご提案いただければ幸いです。事前に

おかげ トーマス

XMLS(元と変換後): XSLT, Renaming Elements using mapping table based on Attribute's value

XSLT 3.0: https://stackoverflow.com/a/46709294/8760211

+0

JSONとして特定のXML文書を表現する方法はたくさんあります.JSONの出力が実際にその要件を説明してくれることを伝えるだけです。 XSLT 3.0は、特定のXML形式をJSONに変換するためのhttps://www.w3.org/TR/xpath-functions-31/#func-xml-to-jsonをサポートしています。したがって、組み込み関数現在のXMLフォーマットを 'xml-to-json'関数が期待しているものに変換する必要があります。 –

+0

こんにちはマーティン、 最後のサポートと現在のコメントをお寄せいただきありがとうございます。 実際、このようなXML2(XML2)を変換する必要があります:https://stackoverflow.com/q/46805848/8760211 いくつかの処理ステップの後で、JSONファイルを元のXML形式(XML1):https://stackoverflow.com/q/46805848/8760211 私はジャクソンが王マイケルジャクソン(RIP)のように仕事をすることを望んだ。 私は素敵なJavaアプリケーションを開発することができますが、XSLTは私のための超現実的な宇宙です! ご意見ありがとうございます。 Thomas – ThomasMuller

答えて

1

それを行うための3つの方法があります。

(1)jsonのXMLモデルを使用してXML文書を構築し、xml-to-json()を使用してフォーマットすることができます。 {1、「B」:「A」2}、例えば出力構築するために最初にXML文書

<fn:map> 
    <fn:number key="a">1</fn:number> 
    <fn:number key="b">2</fn:number> 
</fn:map> 

を構築することになるがこれはあなたの正確な制御と、任意のJSON出力を作成する能力を与えます。

(2)マップと配列からなるデータ構造を構築し、JSON出力メソッドを使用してこれを直列化することができます。たとえば、あなたが構築することができます:

<xsl:map> 
    <xsl:map-entry key="'a'" select="1"/> 
    <xsl:map-entry key="'b'" select="2"/> 
</xsl:map> 

(3)あなたはテキスト出力メソッドを使用して「手で」JSONを書くことができます。

どちらが選択されているかは、実際のデータの場所によって異なります。

+0

こんにちはマイケル、 お返事ありがとうございます。 変換が必要な実際のXMLは、ここでマッピングテーブルで定義されているもの以外の{200,201,500、...}のタイプのレコードを持つことができるので、これを行う簡単な方法があることを期待しました: https ://stackoverflow.com/a/46709294/8760211 ' ... これらの特別なカスタムレコードは、JSONで変換して元に戻す必要があります。 私はこれらのカスタムレコードの内部構造についてはわかりません。 は、私が唯一の外殻、これらの次のレコードのような、より正確なものに注意する必要があります。.. – ThomasMuller

+0

継続するには:... ... <レコードタイプ=「500」> '<レコードタイプ=「200」>' Javaレベルで変換するためにジャクソンを使用しました。 結果はJSONでした。属性はElementsとして表示され、他の値の属性としては表示されませんでした。 この惑星の開発者にとっては難しい一日となるようです:-) ありがとう Thomas – ThomasMuller

+0

こんにちはマイケル、 あなたは正しいです! 質問にカスタム定義された要素の存在をもう少し強調しなければなりませんでした。 これらの詳細が不明なことをお詫び申し上げます。 私はずっと小さなものでタスクを分割しようとしました。 – ThomasMuller