Search Search

#1 worldwide
FREE Coding Lessons

since 1996
   THE BEST WAY to learn ASP & Asp.net!
Advertise Here!
click for details
Credits Host:
DiscountASP.net
Server Admin:
The "Team"
Contact Info.
Charles M. Carroll
<Asp.net blog>
<personal site>
[prev. Lesson]  C# - XML To DataSet
     [next Lesson]  VB.net - XML To DataSet

C# - XML Parser by Charles Carroll

Here is the XML Parser:

   filename=/experiments/xmlparser/xmlparser.aspx

<Test Script Below>


<%@ Assembly src="/experiments/utilitybelt/vercurrent/utilitybelt.vb" %>
<%@ trace="true" debug ="true"%>
<%@ import Namespace="System.Xml"%>
<%@ import Namespace="System.IO"%>
<%@ import Namespace="LearnASP"%>
<script language="c#" runat="server">
    UtilityBelt ub1=new UtilityBelt();
protected void Page_Load(Object S, EventArgs E)
    
    {
    Trace.TraceMode = TraceMode.SortByTime;
    
    Hashtable htl = new Hashtable();
    htl.Add("asin","0932956203");
    htl.Add("type","heavy");
    string strAmazonResult = ub1.wsAmazonASINSearch(htl);
    

    // XmlParse_v1(strAmazonResult);

    // XmlParse_v2(strAmazonResult);
        
    // XmlParse_v3(strAmazonResult,"ProductName,ListPrice,OurPrice,UsedPrice,Author,Rating");


    Hashtable HtAmazon1=new Hashtable();
    HtAmazon1=XmlParse_v4(strAmazonResult,"ProductName,ListPrice,OurPrice,UsedPrice,Author,Rating");
    HTPrinter(HtAmazon1);


    litAmazon.Text=Server.HtmlEncode(strAmazonResult);
    } // end page_load


private void XmlParse_v1(string strAmazonResult)
    {

    System.Xml.XmlTextReader xmlrt1 = new XmlTextReader(new StringReader(strAmazonResult));
    while(xmlrt1.Read())
        {
        //Trace.Write("Node Type", xmlrt1.NodeType.ToString());
        string strNodeType=xmlrt1.NodeType.ToString();
        string strName=xmlrt1.Name;
        
        if(strNodeType=="Element" && strName=="OurPrice")
            {
            xmlrt1.Read();
            Trace.Write("OurPrice", xmlrt1.Value);
            } // end if
            
        if(strNodeType=="Element" && strName=="AvgCustomerRating")
            {
            xmlrt1.Read();
            Trace.Write("average customer rating",xmlrt1.Value);
            } // end if

        if(strNodeType=="Element" && strName=="Author")
            {
            xmlrt1.Read();
            Trace.Write("author",xmlrt1.Value);
                } // end if       
       } // end while
    } // end XmlParse_v1



private void XmlParse_v2(string strAmazonResult)
    {

    System.Xml.XmlTextReader xmlrt1 = new XmlTextReader(new StringReader(strAmazonResult));
    while(xmlrt1.Read())
        {
        //Trace.Write("Node Type", xmlrt1.NodeType.ToString());
        if( xmlrt1.NodeType.ToString().Equals("Element") )
            {
            switch (xmlrt1.Name)
                {
                case "OurPrice":
                xmlrt1.Read();
                Trace.Write("our price", xmlrt1.Value);
                break;

                case "AvgCustomerRating":
                xmlrt1.Read();
                Trace.Write("average customer rating",xmlrt1.Value);
                break;

                case "Author":
                xmlrt1.Read();
                Trace.Write("author",xmlrt1.Value);
                break;
              } // end switch
           } // end if       
       } // end while
    } // end XmlParse_v2


private void XmlParse_v3(string strAmazonResult , string strEleName )
    {
        strEleName="," + strEleName+ ",";
        XmlTextReader xmlrt1 = new XmlTextReader(new StringReader(strAmazonResult));
        while(xmlrt1.Read())
            {
            if( xmlrt1.NodeType.ToString().Equals("Element"))
                {
                      string strName=xmlrt1.Name;
                     if(strEleName.IndexOf("," + strName + ",")>-1)
                         {
                            xmlrt1.Read();
                             Trace.Write(strName,xmlrt1.Value);
                         } // end if
                 } // end if
               } // end while
    } // end XmlParse_v3


private Hashtable XmlParse_v4(string strAmazonResult , string strEleName)
    {
    strEleName="," + strEleName+ ",";
    Hashtable ht = new Hashtable();
    XmlTextReader xmlrt1 = new XmlTextReader(new StringReader(strAmazonResult));
    int i =0;
    while(xmlrt1.Read())
        {
            if( xmlrt1.NodeType.ToString().Equals("Element") )
                {
                string strName=xmlrt1.Name;
                if(strEleName.IndexOf("," + strName + ",")>-1)

            /*
            or as Jeff SchoolCraft would do it...
            if( xmlrt1.NodeType.ToString().Equals("Element") )  
                        {  
                        string strName=xmlrt1.Name;  
                        re = new Regex(strName); 
                        if(re.IsMatch(strEleName))
                */
                    {
                    xmlrt1.Read();
                        if(!ht.Contains(strName))
                        {
                        ht.Add(strName,xmlrt1.Value);
                            i=1;
                        } // end if
                    else
                        { 
                        i++;
                        ht.Add(strName+(i).ToString(),xmlrt1.Value);
                        } // end else
                     } // end if
                 } // end if
             } // end while

        return ht;
 
     } // end XmlParse_v4 
 
 private void HTPrinter(Hashtable htParm)
     {
     foreach (DictionaryEntry d in htParm)
        {
            Trace.Write (d.Key.ToString(),d.Value.ToString());
        } // end foreach

     } // end HTPrinter 

</script>
<html><head>
<title>XMLParser Tricks</title>
</head>
<body bgcolor="#FFFFFF">
<asp:literal id="litAmazon" EnableviewState="false" runat="server" />
<form runat="server">
</form>
</body></html>
Send Us a Holiday Gift!. Charles celebrates Christmas, Jewish holidays, Kwanza, Chinese New Year, Japanese Holidays, Secretary Day, High Muslim Holy Days, Pagan & Wicca holidays, and many more! - send a gift any HOLIDAY. 2004 gift gallery & 2005 gift gallery