だからここに取り引きがあります: 私は、既存の NodeList から NodeList オブジェクトを取得しようとしています。簡単な XML の例を次に示します。
<products>
<category>
<name>Category A</name>
<product>
<code>1</code>
<name>Product 1 Category A</name>
<price>10.0</price>
</product>
<product>
<code>2</code>
<name>Product 2 Category A</name>
<price>20.0</price>
</product>
</category>
<category>
<name>Category B</name>
<product>
<code>3</code>
<name>Product 1 Category B</name>
<price>5.0</price>
</product>
...
</category>
</products>
ご覧のとおり、タグ名は 2 回表示されます。1 回はカテゴリの子ノードとして、もう 1 回は製品の子ノードとして表示されます。商品名だけを取得したい。XML ファイルから読み取ることはできず、文字列として受け取るため、解析関数は次のようになります。
function parseXML(xmlString) {
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xmlString, "text/xml");
var products = xmlDoc.getElementsByTagName("product");
var names = products.tags("name"); //Here's my problem
for(var i = 0; i < names.length; i++){
var element = names[i];
var name = element.firstChild;
$('#div_products').append(name.data + "<br>");
}
$('#div_main').html($('#div_products').html());
}
これは私が参照として使用しているものです: http://help.dottoro.com/ljtrjxbf.php。ただし、nodeListObject.tags("tag") を使用すると、次のエラーが発生します。
processMessage failed: Stack: TypeError: Object #<a NodeList> has no method 'tags'
さまざまなアプローチを試みましたが、何もうまくいきませんでした。平
var names = products["name"];
ドキュメンテーションによると、IE を除いて、最初のノードのみが返され、A) Android/Cordova で作業しており、B) 属性がありません」とにかくノードの名前」。
では、どうすればこれを解決できますか?私は製品の NodeList から新しい XMLDocument オブジェクトを作成しようとすることができると思っていましたが、この問題を解決するためのより簡単な方法があるはずなので、調べていません。