I’m trying to parse an XML file that is generated from our system where there are multiple child elements generated, but are “together” since they have a subchild element that is the same.
To make sense of the partial xml code I pasted below…
Each record is identified by it’s order # and then it contains info for that shipment and at the end lists an individual item that’s for that order with it’s specs.
<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>'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>'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> </order>
<mfg._del_date> </mfg._del_date>
<forw.agent> </forw.agent>
<customer> </customer>
<name> </name>
<item>'</item>
<ordered> </ordered>
<warehouse> </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>'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>'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>'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> </order>
<mfg._del_date> </mfg._del_date>
<forw.agent> </forw.agent>
<customer> </customer>
<name> </name>
<item>'</item>
<ordered> </ordered>
<warehouse> </warehouse>
<desitnation_city_state>Total Lbs:</desitnation_city_state>
<weight>5093.0928</weight>
<size>613.88</size>
</record>
I’d like the output to be grouped by Order # and look something similar to this:
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
Ultimately this is so that I can sort out orders based on total weight and size or a particular item.
—EDIT—
Shows input boxes now, but they aren’t getting filled with anything.
Current js code
$(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);
}
}
Current html code
<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>
Here’s a screenshot:
http://s16.postimage.org/rd1uahm4j/localhost_ftl_parser_html.png
Record.js
Record.html
There is only one issue and that is with your xml entries with the name of forw.agent and mfg.del_date.. you’ll have to escape some of those characters but this adds rows and adds values to those tables.. this is a rough page thrown together and you have liberties to change things as you please.. especially the input box’s you can change those to labels or what have you.. but this parses and displays.. as per requested