8

一見したところ、javascript で xml データを使用するのは、xml-to-json ライブラリを見つけて、xml を javascript オブジェクト ツリーに変換するのと同じくらい簡単だと思いました。

しかし、今では、json に直接マップされない構造を xml で作成できることに気付きました。

具体的には、次のとおりです。

<parentNode>
    <fooNode>data1</fooNode>
    <barNode>data2</barNode>
    <fooNode>data3</fooNode>
</parentNode>

私が見つけた xml-to-json ツールは、前のものを次のように変換します。

{
parentnode:{
    foonode:[
        'data1',
        'data3'
    ],
    barnode:'data2'
}

}

ここで、子ノードの順序が変更されました。子ノードの順序を保持する必要があります。誰もがよりエレガントなソリューションを持っています

a) 自動変換のアイデアを放棄し、独自の JavaScript オブジェクト構造を設計し、この特定の xml スキーマを処理するコードを記述するだけです。

また

b) 変換のアイデアをまったく放棄し、xml データを xml ドキュメントとして残し、それをトラバースします。

4

4 に答える 4

4

制限付きの XML から JSON への確立されたマッピング ( Converting Between XML and JSONを参照) と、JSON から XML へのマッピング (ここで定義されているJSONx および IBM による変換規則を参照)あります。ただし、順序を保持する XML から JSON へのマッピングはまだ定義されていません。XML のすべての側面を完全に把握するには、XML Infosetを JSON で表現する必要があります。XML 要素のみ (処理命令などは不要) に関心がある場合は、次の構造を選択します。

[
  "parentNode",
  { } /* attributes */
  [ 
    [ "fooNode", { }, [ "data1" ] ]
    [ "fooNode", { }, [ "data2" ] ]
    [ "fooNode", { }, [ "data3" ] ]
  ]
]

XML::Structを使用した JSON のような、XML と Perl のデータ構造間のマッピングと同じマッピングを実装しました。この構造はさらに、XML の単純化されたサブセットであるMicroXMLの抽象データ モデルに対応しています。

于 2013-09-06T12:43:35.037 に答える
2

同じ要素名が頻繁に必要で、順序付けが重要な場合は、XML を使用した方がよい場合があります。JSON を使用することで、どのような利点が期待できますか?

于 2009-05-12T16:33:14.463 に答える
1

試してみませんか:

{ parentNode: [
  ["fooNode", "data1"],
  ["barNode", "data2"],
  ["fooNode", "data3"] ]
}

多かれ少なかれ問題を解決すると思います。

はい、柔軟性が十分でない場合は、自動変換を放棄する必要があると思います。代わりに、そのようなマッピングを簡単にする API を探すことができます。

于 2009-05-12T16:36:06.643 に答える