4

私は周りを見回していますが、NodeでXMLを解析する明白な方法がわかりません。文字列またはURLを渡すことができる比較的単純なXMLオブジェクトがあると思いますが、仕様にはそのようなものは見つかりません。外部ライブラリが必要ですか?もしそうなら、あなたたちはどちらをお勧めしますか?明らかな方法でツリーをウォークできる限り(nodeType == ElementNodeであるかどうかをテストし、子をループする)、xPathは必要ありません(気にしないでください)。

4

4 に答える 4

12

単純なXMLからJavaScriptオブジェクトへのコンバーターであるxml2jsをお勧めします。次に、結果のオブジェクトを反復処理できます。ページのコードスニペット:

var parseString = require('xml2js').parseString;
var xml = "<root>Hello xml2js!</root>"
parseString(xml, function (err, result) {
    console.dir(result);
});

を使用してインストールできますnpm install xml2js

于 2013-03-13T04:09:37.420 に答える
3

ここにリストされているさまざまなXMLモジュールがあり、おそらく自分に最適なモジュールが見つかる可能性があります。私が知っている人気のあるものはsax-jsです。そのライブラリに既に精通している場合は、 libxmlバインディングもあります。

于 2013-03-13T03:20:26.910 に答える
0

Expressをbodyパーサーと一緒に使用している場合、最も簡単な方法はexpress-xml-bodyparserを使用することです。シナリオに応じて、すべてのルートまたは特定のルートのXMLを解析できます

すべてのルート:

const xmlparser = require('express-xml-bodyparser');
// .. other middleware ... 
app.use(express.json());
app.use(express.urlencoded());
app.use(xmlparser());
// ... other middleware ... 

app.post('/receive-xml', function(req, res, next) {

  // req.body contains parsed XML as JSON

});

特定のルート:

app.post('/receive-xml', xmlparser({trim: false, explicitArray: false}), function(req, res, next) {
  // req.body contains parsed XML as JSON  
});
于 2019-09-08T06:53:12.537 に答える
-1

サーバー側で実行する必要があることが絶対的な要件ではない場合は、クライアントでXMLSerializerを使用して文字列に解析し、DOMParserを使用してDOMに解析できます。

XMLSerializerの例(DOMから文字列へ):

var XMLS = new XMLSerializer();
var elem = document;
var xml_str = XMLS.serializeToString(elem);
console.log(xml_str);

DOMParserの例(文字列からDOMへ):

var parser = new DOMParser();
var doc = parser.parseFromString(xml_str, "application/xml");
console.log(doc);
于 2013-03-13T03:27:43.180 に答える