2011-07-21 8 views
1

jQueryでこのxmlを読むのに問題があります。jqueryでこのxmlを読む

http://jsfiddle.net/VLtqY/2/

XML:

<myElements type="AA" coID="A923"> 
<element1>01</element1> 
<element2>02</element2> 
<element3>03</element3> 
</myElements> 

私は、次のような出力を探しています:

element1=01 
element2=02 
element3=03 

少し助けてください。

答えて

2

まず、$(xml)のように、xml変数をjQuery関数の呼び出しにラップする必要があります。 children()を呼び出すと、すべてのターゲット要素が取得されます。

ここでは、非常に基本的な(とずさんな)だ要素を反復処理の実施例が、それは変更する必要がちょうどセレクタです:

var xml = '<myElements type="AA" coID="A923"><element1>01</element1> <element2>02</element2><element3>03</element3></typeData>'; 

var myOutput = $("#output"); 

myOutput.append("=== start ===<br />"); 
$(xml).children().each(function() { 
    var xmlnode = $(this); 
    myOutput.append(this.tagName + xmlnode.text() + '<br/>'); 
}); 

myOutput.append("=== end ==="); 

の作業のデモ:http://jsfiddle.net/UByfW/2/

1

この

$('*', xml).each(function() { 

$(xml).find("myElements").each(function() { 

または

$(xml).children().each(function() { 

理由は自明であるラインを交換してみてください:あなたは子供ではなく、ルート要素を取得しなければなりません。

+0

(+1)ありがとう、私はあなたに両方の信用を与えることができたらいいと思います。しかし、彼は "this.tagName"を持っていて、これはまた、タグ値を取得する方法を教えてくれました。 – capdragon

0

あなたはjQueryのを使用することができますparseXMLdocs参照)は、XMLの文字列を解析してXML文書オブジェクトにする機能を持つ。ただ、どこかの変数宣言とあなたのeachループの間に次の行を追加します。

xml = $.parseXML(xml); 

をそれの残りの部分は、その後正常に動作する必要があります。あなたはhereの例を見ることができます。

0

私は本当にこれについてajaxを提案します。 IEはjQueryがxmlを取得する方法を嫌う。私はこれを非常に長い時間、多くの成功と問題なく使用してきた。

$.ajax({ 
    url: "path-to-file.xml", 
    dataType: ($.browser.msie) ? "text" : "xml", 
    success: function(data){ 
          var xml;  
          if (typeof data == "string") { 
           xml = new ActiveXObject("Microsoft.XMLDOM"); 
           xml.async = false; 
           xml.loadXML(data); 
          } else { 
           xml = data; 
          } 
         alert($(xml).find('element1').text()); 
              alert($(xml).find('element2').text()); 
              alert($(xml).find('element3').text()); 
        },//END SUCCSESS 
    error: function(){ 
     alert("Sorry, There was an error loading this information. Refresh the page or try again later. "); 
     history.go(-1); 
    } 
});//END AJAX CALL 

私はこれがたくさんあるように見えますが、それほど悪くはありません。あなたのやりたいことを.each()でXMLに渡します。

+0

書いて申し訳ありませんが、時々タブとスペースが制御不能になる –