Are you required to use XML? Why not use JSON and avoid all the parsing?

If you have to use XML I can make some suggestions to speed up the code a
bit. But let's see if that is a requirement or not first.

-Mike

On Thu, Jan 28, 2010 at 10:32 AM, augur <312...@gmail.com> wrote:

> I spent a couple days looking all over the web for how to do this
> well. I did some picking and choosing of methods, and I came up with
> this. It works best in Safari, then FireFox, and then Chrome. I have
> not tested in IE (do I have to?). It runs up to just over 20,000 lines
> of XML well, over that memory is working too hard.
>
> It is a very linear parser that descends from parent to child nodes as
> it goes. I commented my code heavily so that it should be pretty
> understandable. The one place that I could be a bit more efficient is
> in the processing of the node attributes at each level. I would like
> to parse out node attributes without specifying them (label and id are
> pretty acceptable I guess), so any suggestions there would be great.
>
> :::::The FrameWork::::::
>
> jquery-1.4.min.js
>
>
> :::::The code::::
>
> $(function(){
>  $.ajax({
>    type: "GET",
>    url: "sites.xml",
>    dataType: "xml",
>    success: parseXml
>  });
>        function parseXml(xml) {
>        //get root element //
>                $(xml).find('sites').each(function(){
>                        //get descentdent element = "<element></element" //
>                        $(this).find('>element').each(function(){
>                                //set variable as this item to pass to the
> next function //
>                                var PARENT = $(this);
>                                //get a bunch of attributes of the PARENT
> element. THIS COULD BE
> MORE EFFICIENT //
>                                parentLabel = $(this).attr('label');
>                                parentID = $(this).attr('id');
>                                siteLAT = $(this).attr('lat');
>                                siteLNG = $(this).attr('lng');
>                                //set variable as string of PARENT
> variables//
>                                var parentBLOCK = "<br/>" +parentLabel +" "
> + parentID + "<br/>";
>                                //set variable to post parentBLOCK//
>                                var siteBLOCK =
> $("div").append(parentBLOCK);
>                                //get descentdent element of PARENT //
>                                $(PARENT).find('>element').each(function(){
>                                        //set variable as this item to pass
> to the next function //
>                                        var THISis = $(this);
>                                        //get attributes of the THISis
> element. THIS COULD BE MORE
> EFFICIENT //
>                                        thisLabel = $(this).attr('label');
>                                        //set variable as string of THISis
> variables//
>                                        var thisBLOCK = thisLabel +": Has
> this latitude "+ siteLAT +" &
> this Longitude "+siteLNG;
>                                        //set variable to post thisBLOCK//
>                                        siteBLOCK =
> $("div").append(thisBLOCK + "<br/>");
>                                                  //get descentdent element
> = THISis//
>
>  $(THISis).find('>element').each(function(){
>                                                        //get a bunch of
> attributes of the child elements. THIS COULD
> BE MORE EFFICIENT //
>                                                        childLabel =
> $(this).attr('label');
>                                                        //get text from
> nodes of THISis chlidren elements //
>                                                        childCopy =
> $(this).text();
>                                                        //set variable as
> string of THISis child variables//
>                                                        var childBLOCK =
>  childLabel + ": " + childCopy + "<br/>";
>                                                        //set variable to
> post childBLOCK//
>                                                        siteBLOCK =
> $("div").append(childBLOCK);
>                                                  });
>                                  });
>
>                     });
>
>                 });
>        }
>
> });
>
> :::::The XML::::
>
> <?xml version="1.0" encoding="UTF-8"?>
> <sites>
>         <element label="site" id="1" lat="66" lng="104">
>                <element label="Location">
>                  <element label="city">SF</element>
>                  <element label="state">CA</element>
>                  <element label="region">West Coast</element>
>                </element>
>        </element>
>
>    <element label="site" id="2" lat="27" lng="305">
>                <element label="Location">
>                  <element label="city">Las Vegas</element>
>                  <element label="state">NV</element>
>                  <element label="region">West</element>
>                </element>
>        </element>
>
>    <element label="site" id="3" lat="106" lng="35">
>                <element label="Location">
>                  <element label="city">Pittsburgh</element>
>                  <element label="state">Penn</element>
>                  <element label="region">North East</element>
>                </element>
>        </element>
>
>    <element label="site" id="4" lat="77" lng="77">
>                <element label="Location">
>                  <element label="city">Toledo</element>
>                  <element label="state">Ohio</element>
>                  <element label="region">North Mid</element>
>                </element>
>        </element>
>
> </sites>
>

Reply via email to