2016-10-07 8 views
-1

私はxml文書を解析する経験がほとんどないので、私に同行してください。過去数日間、私は下のxmlサンプルを解析するのに苦労しています!

インターネットを検索して他の人のコメントを読んだ後、私は最良の方法は、私が扱うxmlの型に$ parseXMLを使うことです。

私はxmlを検証し、次のコードを使用しましたが、無効なXMLが得られ続けます。 私の目標は、<dict>に属するすべての文字列値を取得し、<tr>の内部で使用することです。だから私は専門家がこの壊れたコードを修正するのを手伝ってくれて感謝します。

これは私がdiv要素内のキー値を配置する方法です:

var div = "<tr id=\""+i+"\">\n" + 
"<td>"+i+"</td>\n" + 
"<td><img src=\""+ categoryIcon +"\" height=\"42\" width=\"42\"></td>\n" + 
"<td>\n" + 
"<a href=\"javascript:doit('id=" + id + "&name=" + name + "&category=" + category + "&categoryIcon=" + categoryIcon + "','"+ country +"')\" onclick=\"selectLink(this);\">" + name + "</a><br> \n" + 
"<br></td></tr>\n\n"; 

$("#myDiv").append(div); 

ではJavaScript:

<html> 
<head> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
<script> 
function myfunction(){ 
alert("me here"); 

var xml='<?xml version="1.0" encoding="UTF-8"?> <dict><key>ItemLists</key> <array><dict><key>id</key> <string>1</string> <key>name</key> <string>fruits</string> <key>category</key> <string>US Fruits</string> <key>categoryIcon</key> <string>http://www.somsite.com/categories/1.jpg</string> <key>country</key> <string>US</string> </dict> <dict><key>id</key> <string>2</string> <key>name</key> <string>Vegetable</string> <key>category</key> <string>Eu Vegetable</string> <key>categoryIcon</key> <string>http://www.somsite.com/categories/2.jpg</string> <key>country</key> <string>EU</string> </dict> </array> </dict>'; 
    xmlDoc = $.parseXML(xml), 
    $xml = $(xmlDoc); 




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

//alert($(this).find("dict>string").text()); 
//alert($(this).find("dict>key").text()); 
alert($(this).find("dict>categoryIcon>string").text()); 
}); 

}; 
</script> 
</head> 
<body> 
<button onclick="myfunction()">parse</button> 
</body> 
</html> 

解析するXML:

<?xml version="1.0" encoding="UTF-8"?> 
<dict><key>ItemLists</key> 
<array><dict><key>id</key> 
<string>1</string> 
<key>name</key> 
<string>fruits</string> 
<key>category</key> 
<string>US Fruits</string> 
<key>categoryIcon</key> 
<string>http://www.somsite.com/categories/1.jpg</string> 
<key>country</key> 
<string>US</string> 
</dict> 

<dict><key>id</key> 
<string>2</string> 
<key>name</key> 
<string>Vegetable</string> 
<key>category</key> 
<string>Eu Vegetable</string> 
<key>categoryIcon</key> 
<string>http://www.somsite.com/categories/2.jpg</string> 
<key>country</key> 
<string>EU</string> 
</dict> 

</array> 
</dict> 

答えて

0
<script> 
    function myfunction() { 
     alert("me here"); 
     var xml = '<?xml version="1.0" encoding="UTF-8"?> <dict><key>ItemLists</key> <array><dict><key>id</key> <string>1</string> <key>name</key> <string>fruits</string> <key>category</key> <string>US Fruits</string> <key>categoryIcon</key> <string>http://www.somsite.com/categories/1.jpg</string> <key>country</key> <string>US</string> </dict> <dict><key>id</key> <string>2</string> <key>name</key> <string>Vegetable</string> <key>category</key> <string>Eu Vegetable</string> <key>categoryIcon</key> <string>http://www.somsite.com/categories/2.jpg</string> <key>country</key> <string>EU</string> </dict> </array> </dict>'; 
     xmlDoc = $.parseXML(xml), 
     $xml = $(xmlDoc); 

     $.each($xml.find('dict string'), function() { 
      console.info($(this).text()); 
     }); 
    } 
    </script> 

それとも、 eachでもこれを行うことができます文$xml.find('dict>array dict string')

+0

助けてくれてありがとう。私はfirefoxでそれが動作しませんが、クロムで動作するか知っていますか?どのように私はすべてのキー名の代わりに個々のキー値を得ることができます。 たとえば、私は野菜であるcategoryIconとhttp://www.somsite.com/categories/2.jpgという名前のキーの名前の値が必要ですか? 私はこのようにしようとしましたが、何も出てこなかった:$。each($ xml.find( 'dict> categoryIcon> string')、function(){ – user1788736

+0

xmlが正しく構成されていないと、 ''このような何か:それと ' ID'、その後、あなただけのすべてのデータを取得し、その後、必要に応じて、キーと文字列を探すことができ、このような何か:。 '$の.each($のXML .find( 'dict> data')、function(){ var keyText = $(this).find( 'key')。text(); var stringText = $(this).find( 'string')。テキスト(); }); ' –

+0

よくxml私はそれを受け入れる方法です私は切断側でその構造を変更する方法にcontroleがありません。だからあなたは、各ディクテーションのキー値を取得する方法がないと言いますか?私の目標は、個々のキー名とその対応する値を取得して、htmlに出力することです。 – user1788736

関連する問題