1

XML を解析して、作業中のアプリ (Phonegap/JQuery モバイル アプリ) のデータベースに結果を入れようとしています。誰かがJS関数内でこれを行う方法を教えてもらえますか?

XML の解析プロセスは理解していますが、phonegap でアクセスできる SQLlite データベースに XML をローカルに保存することに少し迷っています。私が使用しているXMLは次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
 <orders>
    <order>
        <orderId>123456789</orderId>
        <city>Cincinnati</city>
        <state>Ohio</state>
        <zip>45451</zip>
    </order>
 </orders> 

これを解析するJS関数は次のとおりです。

        $(document).ready(function(){
    $.ajax({
    type: "GET",
    url: "testOrders.xml",
    dataType: "xml",
    success: function(xml) {
      $(xml).find('order').each(function(){
        orderId = $(this).find("orderId").text();
        city = $(this).find("city").text();
        state = $(this).find("state").text();
        zip = $(this).find("zip").text();
         $("#acceptedOrdersContent").append('<div>');
         $("#acceptedOrdersContent").append('<h3>'OrderId: '+ orderId + '</h3>');
         $("#acceptedOrdersContent").append('<p>');
         $("#acceptedOrdersContent").append('City: '+ city + '<br />');
         $("#acceptedOrdersContent").append('State: '+ state + '<br />');
         $("#acceptedOrdersContent").append('Zip: '+ zip +'<br />');
         $("#acceptedOrdersContent").append('</p>');
         $("#acceptedOrdersContent").append('</div>');
            });
        }
     });
 });

みんな、ありがとう!

4

1 に答える 1

5

DB を作成します。

var db = openDatabase('PhoneGap_db', '1.0', '', 2 * 1024 * 1024);

テーブルを作成します。

db.transaction(function (tx) {
  tx.executeSql('CREATE TABLE IF NOT EXISTS orders (id unique, city, state, zip)');
});

テーブルに挿入:

db.transaction(function (tx) {
  tx.executeSql('INSERT INTO orders (id, city, state, zip) VALUES (orderId,city,state,zip)');
});

INSERT を AJAX のコールバック内に配置するのが最善です。

$.ajax({
    type: "GET",
    url: "testOrders.xml",
    dataType: "xml",
    success: function(xml) {
      $(xml).find('order').each(function(){
        orderId = $(this).find("orderId").text();
        city = $(this).find("city").text();
        state = $(this).find("state").text();
        zip = $(this).find("zip").text();
        db.transaction(function (tx) {
           tx.executeSql('INSERT INTO orders (id, city, state, zip) VALUES      (orderId,city,state,zip)');
        });
            });
        }
     });

幸運を!

于 2012-12-06T17:18:55.640 に答える