以下の形式でXMLをJSONからXML変換に生成しました。要素のリスト型のxsltでxmlを再構成する方法
フルオリジナルのXML例:
例1:
<?xml version="1.0" encoding="UTF-8"?>
<linked-hash-map>
<entry>
<string>dataset</string>
<linked-hash-map>
<entry>
<string>id</string>
<string>120140</string>
</entry>
<entry>
<string>dataset_code</string>
<string>GDP</string>
</entry>
<entry>
<string>column_names</string>
<list>
<string>DATE</string>
<string>VALUE</string>
</list>
</entry>
<entry>
<string>frequency</string>
<string>quarterly</string>
</entry>
<entry>
<string>type</string>
<string>Time Series</string>
</entry>
<entry>
<string>premium</string>
<boolean>false</boolean>
</entry>
<entry>
<string>data</string>
<list>
<list>
<string>2016-07-01</string>
<double>18675.3</double>
</list>
<list>
<string>2016-04-01</string>
<double>18450.1</double>
</list>
<list>
<string>2016-01-01</string>
<double>18281.6</double>
</list>
</list>
</entry>
<entry>
<string>database_id</string>
<int>118</int>
</entry>
</linked-hash-map>
</entry>
</linked-hash-map>
例2:
<?xml version="1.0" encoding="UTF-8"?>
<linked-hash-map>
<entry>
<string>dataset</string>
<linked-hash-map>
<entry>
<string>dataset_code</string>
<string>AAPL</string>
</entry>
<entry>
<string>column_names</string>
<list>
<string>DATE</string>
<string>Open</string>
<string>High</string>
<string>Low</string>
<string>Close</string>
</list>
</entry>
<entry>
<string>frequency</string>
<string>quarterly</string>
</entry>
<entry>
<string>type</string>
<string>Time Series</string>
</entry>
<entry>
<string>data</string>
<list>
<list>
<string>2016-07-01</string>
<double>116.45</double>
<double>117.1095</double>
<double>116.4</double>
<double>116.73</double>
</list>
<list>
<string>2016-04-01</string>
<double>18450.1</double>
<double>113.1095</double>
<double>112.4</double>
<double>100.73</double>
</list>
<list>
<string>2016-01-01</string>
<double>18281.6</double>
<double>157.1095</double>
<double>136.4</double>
<double>156.73</double>
</list>
</list>
</entry>
<entry>
<string>database_id</string>
<int>218</int>
</entry>
</linked-hash-map>
</entry>
</linked-hash-map>
以下の部分は、両方のXMLSに変換する必要があります。
<entry>
<string>column_names</string>
<list>
<string>DATE</string>
<string>VALUE</string>
</list>
</entry>
<entry>
<string>data</string>
<list>
<list>
<string>2016-07-01</string>
<double>18675.3</double>
</list>
<list>
<string>2016-04-01</string>
<double>18450.1</double>
</list>
</list>
</entry>
これは次の形式に変換する方法ですか?
1.
<entry>
<Date>2016-07-01</Date>
<Value>18675.3</Value>
</entry>
<entry>
<Date>2016-04-01</Date>
<Value>18450.1</Value>
</entry>
2.
<entry>
<Date>2016-07-01</Date>
<Value>18675.3</Value>
<Date>2016-04-01</Date>
<Value>18450.1</Value>
</entry>
注:すべてのデータ(日付、バリュー、データエントリー、など)ここでは動的です。
XSLTの一般的な実装を探して、目的の出力を取得します。 xsltでは不可能な場合は、Javaでこれを変換することになります。
すべてのヘルプは大
Hmmm、あなたはこれについて詳しく説明できます:_すべてのデータ(日付、値、データ、入力など)はここで動的です。あなたは変換のルールを記述することができますか?たとえば、「常に最初のXML要素をスキップします...」 – Stefan
** 1。**あなたが私たちに示す入力は整形式XMLではありません(ルート要素は1つではありません)。 - ** 2。**。 **すべての**要素名が「動的」であるとは信じられません。いずれにしても、ここにはいくつかのルールが必要です。 –
こんにちはステファン、これを見ていただきありがとうございます。混乱の謝罪列名( "Date"、 "Value")は動的です。その列に何列目が登場するのか、それがどのようなテキストであるのかわからないからです。また、次の配列の "data"名も静的ではありません。これはデータセットまたは何か他のものとして来る可能性があります。私が理解していることは、ヘッダー(列名リスト)とデータが2つのリストに入っており、これらのリストを両方とも単一の配列またはフラット要素にマージする必要があるということです。 XMLから個々のリストを削除します。 xsdを生成するときに、これらの列名が分かります。 – user3187932