JavaScript 用 XML パーサー [終了]
-
01-07-2019 - |
質問
XML データを解析するための優れた JavaScript ライブラリを探しています。内蔵のものよりもはるかに使いやすいはずです XML DOM パーサー ブラウザにバンドルされています。
JSON での作業に少し飽きてしまったので、XML についても同様のことを期待しています。
解決
私が使う jQuery このために。以下に良い例を示します。
(編集:注 - 以下のブログは消滅したようです。)
http://blog.reindel.com/2007/09/24/jquery-and-xml-revisited/
良い例もたくさんあります jQuery ドキュメンテーション:
http://www.webmonkey.com/tutorial/Easy_XML_Consumption_using_jQuery?oldid=20032
編集:私の主な例のブログが廃止されるため、基本を示し、名前空間の問題に役立つ別の例を追加したいと思いました。
他のヒント
免責事項: オープンソースの場合は私が作者です ジェソニックス 図書館 5月 その任務に適していること。
数年前、私も JavaScript 用の優れた XML<->JSON 解析/シリアル化ライブラリを探していました。かなり複雑な XML スキーマに準拠した XML ドキュメントを処理する必要がありました。Javaでは、私は日常的に使用します JAXB このタスクのため、同様のものを探していました:
当時はそのようなツールを見つけることができませんでした。
それで私は書きました ジェソニックス 私はこれを JavaScript の JAXB に相当すると考えています。
見つかるかもしれません ジェソニックス 次の機能に興味がある場合に適しています。
- XML<->JSON 変換は、 宣言型マッピング XML 構造と JSON 構造の間
- これ マッピング できる XML スキーマから生成される または手動で書かれたもの
- 双方向 - 解析とシリアル化 (別の言い方をすればアンマーシャリング/マーシャリング) をサポートします。
- サポート 要素, 属性 そしてまた考慮します 名前空間 XML ドキュメントで定義されます。
- 厳密に型付けされています。
- 厳密に構造化されています。
- ほぼすべてをサポート XML スキーマの組み込み型 (次のような特殊なタイプを含む)
QName
). - で働く ブラウザ 同様に Node.js, 、にも互換性があります RequireJS/AMD (また
amdefine
Node.js 内) - もっている 広範なドキュメント.
しかし、ジェイソニックスは、 やり過ぎかもしれない, XML がかなり単純である場合、XML スキーマがない場合、または厳密な型指定や構造に興味がない場合。要件を確認してください。
例
それを試してみてください JSFiddle で.
取ることができます 発注書スキーマ 次のコマンドを使用してマッピングを生成します。
java -jar node_modules/jsonix/lib/jsonix-schema-compiler-full.jar
-d mappings -p PO purchaseorder.xsd
を取得します。 PO.js
XML と JavaScript 構造の間のマッピングを記述するファイル。印象を与えるために、このマッピング ファイルのスニペットを次に示します。
var PO = {
name: 'PO',
typeInfos: [{
localName: 'PurchaseOrderType',
propertyInfos: [{
name: 'shipTo',
typeInfo: 'PO.USAddress'
}, {
name: 'billTo',
typeInfo: 'PO.USAddress'
}, {
name: 'comment'
}, {
name: 'orderDate',
typeInfo: 'Calendar',
type: 'attribute'
}, ...]
}, {
localName: 'USAddress',
propertyInfos: [ ... ]
}, ...],
elementInfos: [{
elementName: 'purchaseOrder',
typeInfo: 'PO.PurchaseOrderType'
}, ... ]
};
このマッピング ファイルがあれば、 XML:
// First we construct a Jsonix context - a factory for unmarshaller (parser)
// and marshaller (serializer)
var context = new Jsonix.Context([PO]);
// Then we create a unmarshaller
var unmarshaller = context.createUnmarshaller();
// Unmarshal an object from the XML retrieved from the URL
unmarshaller.unmarshalURL('po.xml',
// This callback function will be provided
// with the result of the unmarshalling
function (unmarshalled) {
// Alice Smith
console.log(unmarshalled.value.shipTo.name);
// Baby Monitor
console.log(unmarshalled.value.items.item[1].productName);
});
または、JavaScript オブジェクトを XML としてシリアル化します。
// Create a marshaller
var marshaller = context.createMarshaller();
// Marshal a JavaScript Object as XML (DOM Document)
var doc = marshaller.marshalDocument({
name: {
localPart: "purchaseOrder"
},
value: {
orderDate: { year: 1999, month: 10, day: 20 },
shipTo: {
country: "US",
name: "Alice Smith",
street: "123 Maple Street",
city: "Mill Valley",
state: "CA",
zip: 90952
},
billTo: { /* ... */ },
comment: 'Hurry, my lawn is going wild!',
items: { /* ... */ }
}
});
あなたはそれを試すことができます JSFiddle で 実際にどのように機能するかを確認します。
追加の免責事項: この回答は高投票です。 議論の後 メタについて。 そのため、「メタ効果」に注意してください。 ここでの投票数が多いということは、Jsonix が優れている、適切である、またはコミュニティによって推奨されているということを必ずしも意味するものではありません。得票率の高さに惑わされないでください。
XML が単純な形式の場合は、以下を参照してください。 jQuery そしてその XML to JSON プラグイン または xmlObjectifier.
単純なパーサーについては、以下を参照してください。 <SCRIPT> の XML.
やってみました スクリプトのXML. 。正直に言うと、私はこれを個人的に使用したことはありませんが、それについて良いことをいくつか聞いたり読んだりしたことがあります。
試してみて、あなたの経験をここで共有してみてはいかがでしょうか?