web-dev-qa-db-ja.com

XMLをJavaScript / TypeScriptに逆シリアル化する方法は?

アポイントメントに関する情報を含むXML構造を取得します。

私のコード:

function AppointmentCallback(appointment : any) {
}

これをJavaScriptまたはTypeScript(推奨)のオブジェクトに変換したいと思います。 jQueryには、私が必要としているものとは逆のparseXMLメソッドしかありません。

これを可能にするライブラリはありますか?

前もって感謝します!

9
diiiz_

cxml XMLをJSONに解析し、解析中にハンドラーを起動して、ファイルの読み込み時に処理することもできます。 cxsd を使用して、.xsdスキーマファイルをTypeScript.d.ts定義ファイルにコンパイルできます。解析された出力も完全に型指定されるため、IDE like Atomまたはtscコンパイラは解析されたものを正しく処理していることを確認できますJSON(要素と属性の名前およびデータ型など)

使用方法は次のようになります(その他の例 Github内 ):

import * as cxml from 'cxml';
import * as example from 'cxml/test/xmlns/dir-example';

var parser = new cxml.Parser();
var result = parser.parse('<dir name="empty"></dir>', example.document);

result.then((doc: example.document) => {
    console.log(JSON.stringify(doc, null, 2));
});
4
jjrv

MDNには、JavaScriptでのXMLのシリアル化と逆シリアル化に関する優れた article があり、jQueryなどのライブラリに頼ることなくすべてのオプションをカバーしています。

古いバージョンのIE(pre-11)-および現在のバージョンのOpera Mini-にはいくつかの制限があり、それらをサポートする必要がある場合に問題が発生する可能性があります。特にDOMParser.parseFromStringがありません: これを確認してください

DOMを操作するのではなく、本当にJavaScriptオブジェクトに変換したい場合は、おそらくJXONを確認する必要があります。 これが方法です

いつでもオブジェクトからXMLドキュメントを再作成する場合は、それをDOMに変換し、DOMノードを直接操作することをお勧めします。そうすれば、再シリアル化するときに、ノードの順序が保持されます。昔ながらのJavaScriptオブジェクトのルートをたどると、順序が失われます。

3
Bart Read

Cxsdライブラリをチェックしてください https://www.npmjs.com/package/cxsd xsdをTypeScriptに解析します。いくつかの奇妙な依存関係があります。 npm install --global --production windows-build-toolsを実行する必要がありました。また、cxsd.cmdがパスに含まれていることを確認します。これはcliです。cxsd file.xsd生成されたTypeScriptで.d.tsファイルを出力します。

1
Moriarty

JSONconvertからserializeXmlNodeを使用することもできます

次のように:Jsonconvert(doc)

0
zahma