Hi all,

I realize this is a gigantic newbie question, but I am totally stuck
and I want to do this the right way... figured I'd go to the experts.

I'm trying to write a section of code in jquery that will read my XML
sheet and then produce a set of unordered lists with individual list
items in HTML.  I have it working, but the problem is that my code is
finding every single instance of certain tags and then adding them to
my lists.  So ultimately, every list that this code generates is
perfectly formatted, but they all have the same information.. which is
a problem.

Here is my XML sheet:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<breakfast>
        <dishset>
                <setname>The Royal Breakfast</setname>
                <entreelisting>
                        <entreename>Eggs and whatever</entreename>
                        <price>$15.00</price>
                </entreelisting>
                <entreelisting>
                        <entreename>A waffle with sprinkles on it</entreename>
                        <price>$15.00</price>
                </entreelisting>
                <entreelisting>
                        <entreename>Syrup-covered bacon bits</entreename>
                        <price>$15.00</price>
                </entreelisting>
        </dishset>
        <dishset>
                <setname>The Gravy Train</setname>
                <entreelisting>
                        <entreename>Gravy Boats</entreename>
                        <price>$15.00</price>
                </entreelisting>
                <entreelisting>
                        <entreename>Mush Plate</entreename>
                        <price>$15.00</price>
                </entreelisting>
                <entreelisting>
                        <entreename type="dishaddition">Deep Fried 
Anything</entreename>
                        <price>$15.00</price>
                </entreelisting>
        </dishset>
</breakfast>


And here is my jquery code:

// Start function when DOM has completely loaded
$(document).ready(function(){

        // Open the breakfast.xml file
        $.get("breakfast.xml",{},function(xml){

                // Build an HTML string
                myHTMLOutput = '';

                // Run the function for each dishset tag in the XML file
                $('dishset',xml).each(function(j){
                myHTMLOutput += '<ul class="dishsection">';
                setName = $(this).find("setname").text();
                if ((setName) != undefined){
                                myHTMLOutput += '<h3>'+ setName +'</h3>';
                }

                // Run the function for each entreelisting tag in the XML file
                $('entreelisting',xml).each(function(i) {
                        entreeName = $(this).find("entreename").text();
                        price = $(this).find("price").text();
                        dishAdditions = $(this).find("entreename").attr("type");
                        // Build row HTML data and store in string
                        mydata = BuildMenuHTML(entreeName,price,dishAdditions);
                        myHTMLOutput = myHTMLOutput + mydata;
                });  //run entreelist
                        myHTMLOutput += '</ul>';
                }); //run dishset function
                $("#menucontent").append(myHTMLOutput);
        }); //get xml file
});  //document.ready function



 function BuildMenuHTML(entreeName,price,dishAdditions){

        // Check to see if their is a "post" attribute in the name field
        if ((dishAdditions) != undefined){
                dishAdditionsHTML = '<span class="entreename">'+ dishAdditions 
+'</
em>';
                entreeNameHTML = '';
                liClassHTML = '<li class="dishsubentry">';
        }
        else
        {
                entreeNameHTML = '<span class="entreename">'+ entreeName 
+'</span>';
                dishAdditionsHTML = '';
                liClassHTML = '<li class="dishentry">';
        }

        // Build HTML string and return
        output = '';
        output += liClassHTML;
        output += entreeNameHTML;
        output += dishAdditionsHTML;
        output += '<span class="price">'+ price +'</span>';
        output += '</li>';
        return output;
}


I know that this is probably an obvious or easy fix related to calling
"each()" in the "entreelisting" function, but I just don't know what
the proper ways to reference certain things are.  Any chance anyone
out there could help??

Thanks!

Reply via email to