0

同様の質問がたくさんあることは知っていますが(解決策を探すのに2〜3日かかりました)、それらの大部分は、探しているものではないxml2jsonやjson2xmlなどのライブラリを参照します ...

ここに問題があります:私はXMLから読み取り、それをjQuery ではなく、ライブラリではなく、純粋なjavascriptを使用してJSONオブジェクトに保存したいと考えています。助けてくれてありがとう!

0) xml

<ipod>
    <playlist>
        <name>All</name>
        <contents>
            <song>
                <title>Miley_Cyrus_-_We_Can't_Stop</title>
            </song>
            <song>
                <title>Miley_Cyrus_-_Wrecking Ball</title>
            </song>
        </contents>
    </playlist>
</ipod>

1) javascript // エラーあり

var fileData = 
{
    "title":"non"
};
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET", '1.xml',false);
xmlhttp.send();
xml=xmlhttp.responseXML;

for (var index=0; index<2; index++)
{
  fileData.title[index]=xml.getElementsByTagName("title")[index].childNodes[0].nodeValue;
  console.log(fileData.title[index]);
}
//output:
//n
//o

2) jQuery //エラーなし

var fileData = 
{
    "title":"non"
};
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET", '1.xml',false);
xmlhttp.send();
xml=xmlhttp.responseXML;

fileData.artist = $(xml).find('artist');
for (var index=0; index<3; index++)
{
  fileData.url[index]=fileData.url[index].textContent;
  console.log(fileData.title[index]);
}
//output:
//Miley_Cyrus_-_We_Can't_Stop
//Miley_Cyrus_-_Wrecking Ball
4

2 に答える 2

0

fileData.title を文字列に初期化せずにオブジェクトに初期化すると、ネイティブ バージョンで機能します。変化する

"title":"non" to "title":{}
于 2013-10-21T01:36:59.023 に答える
0

xml を解析したい場合は、正規表現を使用できます。

var titles = xml.match(/<title>([^<]*)<\/title>/g).map(function(x) { return x.substring(7,x.length-8); })
于 2013-10-21T01:03:42.077 に答える