0

Webサービスからxmlファイルを取得しました

<MasterProducts> <MasterProduct> <Productcode>023DDC</Productcode> <Description>Dell CRT 17 Computer Monitor E771a</Description> <ThumbPic>NoImage.png</ThumbPic> <RRP>0.000000</RRP> <Stock>2</Stock> </MasterProduct> </MasterProducts>

私が使用しているChromeIDEは、これを自動的にJSONに変換します。私は、Javascriptをまったく使用していないため、これを解析しようとしても成功しませんでした。

httpResponseは、エラー変数とjsonファイルを保持するデータ変数を返します。

if(error===false)
{ 
    if(data !== '')
    { 
        objData = data.getElementsByTagName('MasterProducts');
        //returns a NodeList here
        var items = objData[0].getElementsByTagName('MasterProduct')[0].getElementsByTagName('Description')[0].firstChild.data;

    }
    else
    { 
        alert("No Data"); 
    } 
}

ノードリストを取得するところまで行っただけですが、タグから必要なデータを取得できませんでした。

編集:オンラインコンバーターを使用して、以下のJSONを取得しました

{
   "MasterProducts": {
      "MasterProduct": {
  "Productcode": "023DDC",
  "Description": "Dell CRT 17 Computer Monitor E771a",
  "ThumbPic": "NoImage.png",
  "RRP": "0.000000",
  "Stock": "2"
      }
  }
 }
4

3 に答える 3

1

http://jsonlint.com/によると、返されるJSONは有効であるため、スクリプトはXMLのようにノードを解析するのではなく、ドット表記を使用してデータのコンテンツにアクセスできる必要があります。

var data ={
            "MasterProducts": {
                "MasterProduct": {   
                    "Productcode": "023DDC",
                    "Description": "Dell CRT 17 Computer Monitor E771a",
                    "ThumbPic": "NoImage.png",
                    "RRP": "0.000000",
                    "Stock": "2"
                 }   
             }  
         }

 var description = data.MasterProducts.MasterProduct.Description;

説明には「DellCRT17ComputerMonitorE771a」が含まれます

于 2012-10-25T16:05:55.740 に答える
0

データは文字列の一種のようです。「getElementsByTagName」は、dom要素とdom自体でのみ(一部のブラウザーで)使用できます。非表示のdivに応答を追加し、jQueryを使用してクエリを実行してみてください。

$("#hidden").html(data);

次に、jqueryを使用してそのdivをクエリするか、またはしようとしているようにdomを直接使用できます。

$("#hidden").find("MasterProducts")[0].getElementsByTagName("MasterProduct")
于 2012-10-25T15:46:12.097 に答える
0

他の回答が言うように、XMLをdomに追加せずにjQueryobjに直接保存できます。

var $xml = $(data);

次に、jQueryを使用して特定の要素をターゲットにします。getElementsByTagNameは特定のブラウザーでのみ使用できるため、使用しないでください。

var MasterProducts = [];

$xml.find('MasterProduct').each(function(){
   var $masterProduct = $(this);
   var masterProduct = {};
   $masterProduct.find('*').each(function(){
      masterProduct[$(this).get(0).tagName] = $(this).text();
   });
   MasterProducts.push(masterProduct);
});

最終的に、MasterProducts配列にはJavaScriptオブジェクトが含まれている必要があります。このオブジェクトは、次の呼び出しでJSONに変換できます。

var json = JSON.stringify(MasterProducts);

これをjsFiddleに置きました。http://jsfiddle.net/WRF4D/を参照してください

于 2012-10-25T16:06:27.313 に答える