.net CF中使用XmlTextReader对Xml的解析方法

来源:互联网 发布:mac系统语言彻底更改 编辑:程序博客网 时间:2024/05/20 14:40
 
1.         XML的解析方法(XmlTextReader的使用)[yellowpage.xml]
 <?xml version="1.0" encoding="UTF-8"?>
<results count="10" offset="1" total="226">
   <result>
      <ypinfoid>10704462</ypinfoid>
      <title>北京大学</title>
      <phone>01062752114</phone>
      <address>北京市海淀区颐和园路5号</address>
      <coordinates format="WGS-84">
         <latitude>4426974</latitude>
         <longitude>441565</longitude>
      </coordinates>
      <category>A700</category>
   </result>
   <result>
      <ypinfoid>1317519</ypinfoid>
      <title>北京大学邮电所</title>
      <phone>01062613356</phone>
      <address>北京市海淀区颐和园路5号</address>
      <coordinates format="WGS-84">
         <latitude>4427384</latitude>
         <longitude>440632</longitude>
      </coordinates>
   </result>
   <result>
      <ypinfoid>1454200</ypinfoid>
      <title>北京大学医学部</title>
      <phone>01062091114</phone>
      <address>北京市海淀区学院路38号</address>
      <coordinates format="WGS-84">
         <latitude>4426192</latitude>
         <longitude>444850</longitude>
      </coordinates>
   </result>
</results>
 
以上面yellowpage.xml为例所示的xml数据:
A.       方法一: 通过XmlTextReader.EOF流结尾作循环结束标志控制(读取时要顺序读取)
private void ParserXML(XmlTextReader reader)
{
       reader.WhitespaceHandling=WhitespaceHandling.None;
       reader.MoveToContent(); //跳过声明和注释
       if(reader.Name=="results"&&reader.HasAttributes) //读取属性
              ReaderXmlAttribute(reader);      
                reader.MoveToElement(); //返回包含当前属性的结点                   System.Console.WriteLine("***********======"+reader.Name);
              try
              {
                  reader.Read(); //跳过根Results结点
                  int count=0;
                     while(!reader.EOF&&reader.Name!="results")
                     {
                     //     if(reader.Name=="results")break;                              System.Console.WriteLine("====="+reader.Name+(++count).ToString());
//以result开始,即以result开始是一条记录
                            reader.ReadStartElement("result");      
                            reader.ReadStartElement("ypinfoid");
//读取该元素的文本值
                     System.Console.WriteLine("ypinfoid Text=="+reader.ReadString());
                            // ypinfoid的结束标志,并跳入下一节点
                            reader.ReadEndElement();   
                            reader.ReadStartElement("title");
               System.Console.WriteLine("title Text=="+reader.ReadString());
                            reader.ReadEndElement();
                            reader.ReadStartElement("phone");
               System.Console.WriteLine("phone Text=="+reader.ReadString().Trim());
                            reader.ReadEndElement();
                            reader.ReadStartElement("address");    System.Console.WriteLine("address Text=="+reader.ReadString().Trim());
                            reader.ReadEndElement();    
                            if(reader.Name=="coordinates")
                            {
                                   if(reader.HasAttributes)
                                   {            Console.WriteLine("!!!!!!!!!!!!!!!!===attribue==="+reader.GetAttribute(0));
                                   }
reader.ReadStartElement("coordinates"); reader.ReadStartElement("latitude");
       System.Console.WriteLine("latitude Text=="+reader.ReadString());
                            reader.ReadEndElement();                                              
                            reader.ReadStartElement("longitude");
       ystem.Console.WriteLine("longitude Text=="+reader.ReadString());
                            reader.ReadEndElement();                                       
                            reader.ReadEndElement();    
                        }                                  
                            if(reader.Name=="category")
                            {
                                   reader.ReadStartElement("category");
       System.Console.WriteLine("latitude Text=="+reader.ReadString());
                            reader.ReadEndElement();
                     }
                     reader.ReadEndElement();
            }
            if(reader!=null)
            {
                 reader.Close();
           System.Console.WriteLine("Reader Closed State=******");
            }        
            reader=null;  
        }
        catch(Exception e){ }
        }
B.        方法一: 通过XmlTextReader.Read()节点跳进和对名字判断进行循环控制
 
XmlTextReader reader = null;
    try
    {
       //Load the reader with the XML file.
       reader = new XmlTextReader("yellowpage.xml");
     reader.WhitespaceHandling=WhitespaceHandling.None;
        reader.MoveToContent();
             if(reader.HasAttributes)
             {
                  for(int i=0;i<reader.AttributeCount;i++)
                  {
                                reader.MoveToAttribute(i);       Console.WriteLine("Name="+reader.Name+" :"+"value="+reader.Value);
                  }
             }   
             int ii=0;
       //Parse the XML and display the text content of each of the elements.
       while (reader.Read()){
       Console.WriteLine("===========================================");
        Console.WriteLine("##### "+reader.Name+" :: "+(++ii).ToString());
         if (reader.IsStartElement("result")&&!reader.IsEmptyElement)
         {       
             while(reader.Read()&&reader.Name!="result")
                  {
                Console.WriteLine("=========="+reader.Name);               
                         if(reader.IsStartElement()&&!reader.IsEmptyElement)
                         {
                                string subName=reader.Name;                                 
                                if(subName=="coordinates")
                                {
                                       if(reader.HasAttributes)
                                       {
                                              for(int i=0;i<reader.AttributeCount;i++)
                  Console.WriteLine("coordinates Attribute = "+reader.GetAttribute(i));
                                       }          
                                    while(reader.Read()&&reader.Name!="coordinates")
                                  {  
if(reader.IsStartElement("latitude")&&!reader.IsEmptyElement)
                                        {                        
                           Console.WriteLine("latitude text==="+reader.ReadString());
                                         }                                              if(reader.IsStartElement("longitude")&&!reader.IsEmptyElement)
                                        {                                      
                        Console.WriteLine("longitude text==="+reader.ReadString());
                                        }
                                    }
                                }
                         else
                         {
                     string subText=reader.ReadString();                    Console.WriteLine("*******===== "+subText); 
                                if(subName=="ypinfoid")
                                {
                                  Console.WriteLine("ypinfoid text==="+subText);
                                 }                                     
                                 if(subName=="title")
                                  {
                                Console.WriteLine("title text==="+subText);
                                  }
if(subName=="phone")
                                   {
                                    Console.WriteLine("phone text==="+subText);
                                   }
                                   if(subName=="address")
                                    {
                               Console.WriteLine("address text==="+subText);
                                     }
                                    if(subName=="category")
                                    {
                                Console.WriteLine("category text==="+subText);
                                     }
                                 }   
                  }
            }
         }
       }     
     }
finally
     {
        if (reader != null)
          reader.Close();
      }
}
using System;
using System.IO;
using System.Xml;

public class Sample 
{
  
public static void Main()
  
{
    XmlTextReader reader 
= null;
    
try
    
{
       
//Load the reader with the XML file.
       reader = new XmlTextReader("yellowpage.xml");
           reader.WhitespaceHandling
=WhitespaceHandling.None;
      
/*    
          reader.MoveToContent();
          int count=0;
          while(!reader.EOF)
          {
          //        Console.WriteLine("=======   "+reader.Name);    
              if(reader.MoveToContent()==XmlNodeType.Element&&reader.Name=="ypinfoid")
                  {
                       Console.WriteLine("ypinfoid Text== "+reader.ReadElementString());    
                  }
                  
              else
                  if(reader.MoveToContent()==XmlNodeType.Element&&reader.Name=="title")
                  {
                       Console.WriteLine("title Text== "+reader.ReadElementString());    
                  }
              else    if(reader.MoveToContent()==XmlNodeType.Element&&reader.Name=="phone")
                  {
                       Console.WriteLine("phone Text== "+reader.ReadElementString());    
                  }
                  
              else    if(reader.MoveToContent()==XmlNodeType.Element&&reader.Name=="address")
                  {
                       Console.WriteLine("address Text== "+reader.ReadElementString());    
                  }
              else    if(reader.MoveToContent()==XmlNodeType.Element&&reader.Name=="latitude")
                  {
                       Console.WriteLine("latitude Text== "+reader.ReadElementString());    
                  }
                  
                  else if(reader.MoveToContent()==XmlNodeType.Element&&reader.Name=="longitude")
                  {
                       Console.WriteLine("longitude Text== "+reader.ReadElementString());    
                  }
                  else if(reader.MoveToContent()==XmlNodeType.Element&&reader.Name=="category")
                  {
                       Console.WriteLine("category Text== "+reader.ReadElementString());    
                       Console.WriteLine("============================================  "+(++count).ToString());    
                  }
              else
                  reader.Read();
          }
          
*/

          
           reader.MoveToContent();
           
if(reader.HasAttributes)
           
{
               
for(int i=0;i<reader.AttributeCount;i++)
               
{
                       reader.MoveToAttribute(i);
                        Console.WriteLine(
"Name="+reader.Name+"  :"+"value="+reader.Value);
               }

           }
    
           
int ii=0;
       
//Parse the XML and display the text content of each of the elements.
       while (reader.Read()){
          Console.WriteLine(
"==================================================================");
           Console.WriteLine(
"##### "+reader.Name+" :: "+(++ii).ToString());
         
if (reader.IsStartElement("result")&&!reader.IsEmptyElement)
         
{       
                
while(reader.Read()&&reader.Name!="result")
                 
{
                Console.WriteLine(
"=========="+reader.Name);                
                     
if(reader.IsStartElement()&&!reader.IsEmptyElement)
                     
{
                         
string subName=reader.Name;
          
//               string subText=reader.ReadElementString();
                             
                         
if(subName=="coordinates")
                         
{
                             
if(reader.HasAttributes)
                             
{
                                 
for(int i=0;i<reader.AttributeCount;i++)
                                         Console.WriteLine(
"coordinates Attribute = "+reader.GetAttribute(i));
                             }
           
                             
while(reader.Read()&&reader.Name!="coordinates")
                             
{                       
                                 
if(reader.IsStartElement("latitude")&&!reader.IsEmptyElement)
                                 
{                       
                                    Console.WriteLine(
"latitude text==="+reader.ReadString());
                                  
//    Console.WriteLine("latitude text=== "+subText);
                                 }

                                 
if(reader.IsStartElement("longitude")&&!reader.IsEmptyElement)
                                 
{                           
                                    Console.WriteLine(
"longitude text==="+reader.ReadString());
                              
//        Console.WriteLine("longitude text==="+subText);
                                 }

                             }

                         }

                         
else
                         
{
                     
//           reader.Read();
                                     string subText=reader.ReadString();
                                     Console.WriteLine(
"********************=====  "+subText);  
                               
if(subName=="ypinfoid")
                               
{
                          
//         Console.WriteLine("ypinfoid text==="+reader.ReadString());
                                   Console.WriteLine("ypinfoid text==="+subText);
                               }
                               
                               
if(subName=="title")
                               
{
                          
//         Console.WriteLine("title text==="+reader.ReadString());
                                   Console.WriteLine("title text==="+subText);
                               }

                               
                               
if(subName=="phone")
                               
{
                          
//         Console.WriteLine("phone text==="+reader.ReadString());
                                   Console.WriteLine("phone text==="+subText);
                               }

                               
                               
if(subName=="address")
                               
{
                           
//        Console.WriteLine("address text==="+reader.ReadString());
                                   Console.WriteLine("address text==="+subText);
                               }

                               
                               
if(subName=="category")
                               
{
                                   
//    Console.WriteLine("category text==="+reader.ReadString());
                                       Console.WriteLine("category text==="+subText);
                               }

                          }
    
                 }
 
            }

         }

       }

      
     }
 

     
finally 
     
{
        
if (reader != null)
          reader.Close();
      }

  }

  
}
 // End class

//=======================================================================================//

using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Net;
using System.Threading;
using System.Reflection;
using System.Xml;

public class ParserXml
{
    
private const string TestURL="http://203.81.20.78:8080/yindex/yellowpage?keyword=%E5%8C%97%E4%BA%AC%E5%A4%A7%E5%AD%A6%20&location=%E5%8C%97%E4%BA%AC&rpp=10&search_type=yellowpage&offset=1&hl=31";
    
========联网处理=====================//


============解析xml数据=======================// ===========================================//
    
    
//读取xml结点属性
        private void ReaderXmlAttribute(XmlTextReader reader)
        
{            
#if true //Debug
            System.Diagnostics.Debug.WriteLine(
"当前节点名字: "+reader.Name);
            
====Method 1===============//

            
====Method 2===============//
            
            
====Method 3===============//

            
for(int j=0;j<reader.AttributeCount;j++)
            
{
                Console.WriteLine(
"attribute value= "+reader[j]);
            }

#endif     
        }

    
    
     
private  void RunThread()
        
{

        System.Threading.Monitor.Enter(
this);
                StartScanURL(TestURL);
        System.Threading.Monitor.Exit(
this);

        }

        
    
private void PrintErrMsg(string messgage)
        
{
        
//    MessageBox.Show(messgage,"错误提示",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
            MessageBox.Show(messgage);
#if Debug
                System.Diagnostics.Debug.WriteLine(e.Message);
#endif
        }
    
        
        
        
public ParserXml()
        
{
            XmlTextReader reader
=new XmlTextReader("yellowpage.xml");
            ParserXML(reader);
            
    
//        RunThread();
        
//    new Thread(new ThreadStart(RunThread)).Start();
        }

        
    
public static void Main()
    
{        
        
new ParserXml();
        
        
/*
        XmlTextReader reader=new XmlTextReader("TestXml.xml");
        reader.WhitespaceHandling=WhitespaceHandling.None;
        reader.MoveToContent();
        try
        {
           reader.Read();
            while(!reader.EOF)
                {
                    if(reader.Name=="books")break;
                    System.Console.WriteLine("========================================"+reader.Name);
                    
                    reader.ReadStartElement("book");
        
                        reader.ReadStartElement("title");
                        System.Console.WriteLine("Title Text=="+reader.ReadString());
                        reader.ReadEndElement();
                        
                        reader.ReadStartElement("price");
                        System.Console.WriteLine("price Text=="+reader.ReadString());
                        reader.ReadEndElement();
                        
                            
                        reader.ReadStartElement("name"); 
                        System.Console.WriteLine("name Text=="+reader.ReadString().Trim());
                        reader.ReadEndElement();
                        
                        reader.ReadStartElement("adress"); 
                            System.Console.WriteLine("adress Text=="+reader.ReadString().Trim());
                        reader.ReadEndElement();
                        
                    if(reader.Name=="namespace")
                    {
                        reader.ReadStartElement("namespace");
                        
                          reader.ReadStartElement("position");
                            System.Console.WriteLine("position Text=="+reader.ReadString());
                            reader.ReadEndElement();
                            
                            reader.ReadStartElement("kinds");
                            System.Console.WriteLine("kinds Text=="+reader.ReadString());
                            reader.ReadEndElement();
                        
                    reader.ReadEndElement();    
                    }
                reader.ReadEndElement();    
                
         }
         
         if(reader!=null)
         {
                 reader.Close();
                 System.Console.WriteLine("****************************");
         }
         
         reader=null;
   
      }
      catch(Exception e){System.Console.WriteLine(e.Message);}
      
*/

  }

}


 
原创粉丝点击