1

複数の子要素が生成されているシステムから生成されたXMLファイルを解析しようとしていますが、同じサブ子要素があるため「一緒に」なっています。

以下に貼り付けた部分的なxmlコードを理解するために...

各レコードは注文番号で識別され、その出荷の情報が含まれ、最後にその注文の個々のアイテムとその仕様が一覧表示されます。

<forward_agent>
    <record>
      <order>562490</order>
      <mfg._del_date>11-19-2008</mfg._del_date>
      <forw.agent>263</forw.agent>
      <customer>120</customer>
      <name>BLUEBERRY AUBURN HILLS</name>
      <item>&apos;28.1461.00</item>
      <ordered>1.0000</ordered>
      <warehouse>001</warehouse>
      <desitnation_city_state>AUBURN HILLS  MI</desitnation_city_state>
      <weight>60.1201</weight>
      <size>9.70</size>
</record>
<record>
      <order>562490</order>
      <mfg._del_date>11-19-2008</mfg._del_date>
      <forw.agent>263</forw.agent>
      <customer>120</customer>
      <name>BLUEBERRY AUBURN HILLS</name>
      <item>&apos;545</item>
      <ordered>1.0000</ordered>
      <warehouse>002</warehouse>
      <desitnation_city_state>AUBURN HILLS  MI</desitnation_city_state>
      <weight>82.0120</weight>
      <size>12.86</size>
</record>
<record>
      <order>&#160;</order>
      <mfg._del_date>&#160;</mfg._del_date>
      <forw.agent>&#160;</forw.agent>
      <customer>&#160;</customer>
      <name>&#160;</name>
      <item>&apos;</item>
      <ordered>&#160;</ordered>
      <warehouse>&#160;</warehouse>
      <desitnation_city_state>Total Lbs:</desitnation_city_state>
      <weight>1658.1342</weight>
      <size>199.36</size>
</record>
    <record>
      <order>562136</order>
      <mfg._del_date>11-19-2008</mfg._del_date>
      <forw.agent>263</forw.agent>
      <customer>133</customer>
      <name>BLUEBERRY ALBUQUERQUE</name>
      <item>&apos;4635</item>
      <ordered>2.0000</ordered>
      <warehouse>002</warehouse>
      <desitnation_city_state>EL PASO  TX</desitnation_city_state>
      <weight>23.9863</weight>
      <size>4.00</size>
</record>
<record>
      <order>562136</order>
      <mfg._del_date>11-19-2008</mfg._del_date>
      <forw.agent>263</forw.agent>
      <customer>133</customer>
      <name>BLUEBERRY ALBUQUERQUE</name>
      <item>&apos;5590</item>
      <ordered>1.0000</ordered>
      <warehouse>002</warehouse>
      <desitnation_city_state>EL PASO  TX</desitnation_city_state>
      <weight>0.0000</weight>
      <size>0.00</size>
</record>
<record>
      <order>562136</order>
      <mfg._del_date>11-19-2008</mfg._del_date>
      <forw.agent>263</forw.agent>
      <customer>133</customer>
      <name>BLUEBERRY ALBUQUERQUE</name>
      <item>&apos;5591</item>
      <ordered>1.0000</ordered>
      <warehouse>002</warehouse>
      <desitnation_city_state>EL PASO  TX</desitnation_city_state>
      <weight>436.0082</weight>
      <size>96.67</size>
</record>
<record>
      <order>&#160;</order>
      <mfg._del_date>&#160;</mfg._del_date>
      <forw.agent>&#160;</forw.agent>
      <customer>&#160;</customer>
      <name>&#160;</name>
      <item>&apos;</item>
      <ordered>&#160;</ordered>
      <warehouse>&#160;</warehouse>
      <desitnation_city_state>Total Lbs:</desitnation_city_state>
      <weight>5093.0928</weight>
      <size>613.88</size>
</record>

出力を注文番号ごとにグループ化し、次のように表示したいと思います。

Item         Ordered    Weight          Size
1221         1          320.6734        31.36
1601         1          34.0724         11.42
2122         1          86.0023         12.79
5543.SP      1          1075.254        121.23
28.1461.00       1          60.1201         9.7
545              1          82.012          12.86
            Total Lbs:  1658.1342       199.36

最終的には、これは、総重量とサイズ、または特定のアイテムに基づいて注文を分類できるようにするためです。

- -編集 - -

現在、入力ボックスが表示されていますが、何も表示されていません。

現在のjsコード

$(document).ready(function()
{
  $.ajax({
    type: "GET",
    url: "b2.xml",
    dataType: "xml",
    success: function(response) { parseXML(response); }
  });
});

var recordList =[];

function parseXML(xml) {
$(xml).find('record').each(function () {
    var entry = new Object();
    entry.order= $(this).find('order').text();
    entry.delDate= $(this).find('mfg._del_date').text();
    entry.forw = $(this).find('forw.agent').text();
    entry.customer= $(this).find('customer').text();
    //
    //

    recordList.push(entry);

});
send(); // handles xml after parsed
}

function send(){
     // for each row of a table
     for(var i = 0; i < $("#table tr").size(); i++){
         $('#orderNum' + i).val(recordList[i].order);
         $('#delDate' + i).val(recordList[i].delDate);
         $('#forw' + i).val(recordList[i].forw);
         $('#customer' + i).val(recordList[i].customer);
     }
 }

現在のhtmlコード

    <html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.js"></script>
    <script type="text/javascript" src="parser.js"></script>
</head>
<body>
<table>
    <tr>
        <td>Order #</td>
        <td>Delete Date</td>
        <td>Forward</td>
        <td>Customer</td>
    </tr>
    <tr>
        <td><input id="orderNum0" type="text" /></td>
        <td><input id="delDate0" type="text" /></td>
        <td><input id="forw0" type="text" /></td>
        <td><input id="customer0" type="text" /></td>
    </tr>
</table>
</body>
</html>

スクリーンショットは次のとおりです。

http://s16.postimage.org/rd1uahm4j/localhost_ftl_parser_html.png

4

1 に答える 1

0

Record.js

$(document).ready(function(){

$.ajax({
type: "GET",
url: "record.xml", 
dataType: "xml",
success: function(xml){
    parseXML(xml); 
},
error: function(response, textStatus, errorThrown){ 
    console.log(textStatus, errorThrown);}
   });
});

var recordList =[];

function parseXML(xml) {
$(xml).find('record').each(function () {
var entry = new Object();
entry.order= $(this).find('order').text();
entry.delDate= $(this).find('mfg').text();
entry.forw = $(this).find('forw').text();
entry.customer = $(this).find('customer').text();
entry.name = $(this).find('name').text();
entry.item = $(this).find('item').text();
entry.ordered = $(this).find('ordered').text();
entry.warehouse = $(this).find('warehouse').text();
entry.destination = $(this).find('desitnation_city_state').text();
entry.weight = $(this).find('weight').text();
entry.size = $(this).find('size').text();

recordList.push(entry);
});
send(); // handles xml after parsed
}

function send(){
 // for each row of a table
 addRows();
 for(var i = 0; i < recordList.length; i++){
     $('#orderNum' + i).val(recordList[i].order);
     $('#delDate' + i).val(recordList[i].delDate);
     $('#forw' + i).val(recordList[i].forw);
     $('#customer' + i).val(recordList[i].customer);
     $('#name'+i).val(recordList[i].name);
     $('#item'+i).val(recordList[i].item);
     $('#ordered'+i).val(recordList[i].ordered);
     $('#warehouse'+i).val(recordList[i].warehouse);
     $('#destination'+i).val(recordList[i].destination);
     $('#weight'+i).val(recordList[i].weight);
     $('#size'+i).val(recordList[i].size);

     }
  }

 function addRows(){
      for(var i = 1; i < recordList.length; i++){
         var newField = "<tr><td><input id=\"orderNum"+i+"\" size=\"10\" type=\"text\"    </td>"+
                        "<td><input id=\"delDate"+i+"\" size=\"10\" type=\"text\"</td>"+
     "<td><input id=\"forw"+i+"\" size=\"10\" type=\"text\"</td>"+
     "<td><input id=\"customer"+i+"\" size=\"10\" type=\"text\"</td>"+
     "<td><input id=\"name"+i+"\" size=\"10\" type=\"text\"</td>"+
     "<td><input id=\"item"+i+"\" size=\"10\" type=\"text\"</td>"+
     "<td><input id=\"ordered"+i+"\" size=\"10\" type=\"text\"</td>"+
     "<td><input id=\"warehouse"+i+"\" size=\"10\" type=\"text\"</td>"+
     "<td><input id=\"destination"+i+"\" type=\"text\"</td>"+
     "<td><input id=\"weight"+i+"\" size=\"10\" type=\"text\"</td>"+
     "<td><input id=\"size"+i+"\" size=\"10\" type=\"text\"</td></tr>"

     $('#tableId').append(newField);
        }
   }   

Record.html

      <html>
     <head>
     <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <script type="text/javascript"   src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
      <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.2.js"></script>
       <script type="text/javascript" src="records.js"></script>
   </head>
<body>
<table id="tableId">
    <tr>
        <td>Order #</td>
        <td>Delete Date</td>
        <td>Forward</td>
        <td>Customer</td>
    <td>Name</td>
    <td>Item</td>
    <td>Ordered</td>
    <td>Warehouse</td>
    <td>Destination</td>
    <td>Weight</td>
    <td>Size</td>
</tr>
<tr>
    <td><input id="orderNum0" size="10" type="text" /></td>
    <td><input id="delDate0" size="10" type="text" /></td>
    <td><input id="forw0" size="10" type="text" /></td>
    <td><input id="customer0" size="10" type="text" /></td>
<td><input id="name0" size="10" type="text" /></td>
<td><input id="item0" size="10" type="text" /></td>
<td><input id="ordered0" size="10" type="text" /></td>
<td><input id="warehouse0"size="10"  type="text" /></td>
<td><input id="destination0" type="text" /></td>
<td><input id="weight0"size="10"  type="text" /></td>
<td><input id="size0" size="10" type="text" /></td>
</tr>
</table>
</body>
</html>

問題は1つだけで、それはforw.agentとmfg.del_dateという名前のxmlエントリにあります。これらの文字の一部をエスケープする必要がありますが、これにより行が追加され、これらのテーブルに値が追加されます。これは大まかなページが一緒にスローされ、好きなように変更する自由があります。特に入力ボックスでは、ラベルや自分の名前に変更できます。ただし、これは要求に応じて解析および表示されます。

于 2012-11-09T20:33:05.233 に答える