`
yufenfei
  • 浏览: 803009 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

xml的解析方法及源代码

    博客分类:
  • XML
阅读更多

xml的解析方法及源代码

第一种:SAX解析
SAX处理机制:SAX是一种基于事件驱动的API。利用SAX解析XML文档,牵涉到两个部分:解析器和事件处理器。解析器负责读取XML文档,并向事件处理器发生事件,如元素开始和元素结束事件;而事件处理器则负责对事件做出响应,对传递的XML数据进行处理。

测试用的xml文件:db.xml

Xml代码 复制代码

<?xml version="1.0" encoding="UTF-8"?>  

<!--<!DOCTYPE dbconfig SYSTEM "db.dtd">-->  

<dbconfig>  

 <db type="oracle">  

  <driver>oracle.jdbc.driver.OracleDriver</driver>  

  <url>jdbc:oracle:thin:@localhost:1521:oracle</url>  

  <user>scott</user>  

  <password>tiger</password>  

 </db>  

</dbconfig>  

<?xml version="1.0" encoding="UTF-8"?>
<!--<!DOCTYPE dbconfig SYSTEM "db.dtd">-->
<dbconfig>
 <db type="oracle">
  <driver>oracle.jdbc.driver.OracleDriver</driver>
  <url>jdbc:oracle:thin:@localhost:1521:oracle</url>
  <user>scott</user>
  <password>tiger</password>
 </db>
</dbconfig>

DTD文件db.dtd

Xml代码 复制代码

<!ELEMENT dbconfig (db+)>  

<!ELEMENT db (driver,url,user,password)>  

<!ELEMENT driver (#PCDATA)>  

<!ELEMENT url (#PCDATA)>  

<!ELEMENT user (#PCDATA)>  

<!ELEMENT password (#PCDATA)>  

<!ATTLIST db type CDATA #REQUIRED>  

<!ELEMENT dbconfig (db+)>
<!ELEMENT db (driver,url,user,password)>
<!ELEMENT driver (#PCDATA)>
<!ELEMENT url (#PCDATA)>
<!ELEMENT user (#PCDATA)>
<!ELEMENT password (#PCDATA)>
<!ATTLIST db type CDATA #REQUIRED>

SAX解析实例一
org.xml.sax.DefalutHandler类:  可以扩展该类,给出自己的解析实现
SAXPrinter.java

Java代码 复制代码

import java.io.File;   

  

import javax.xml.parsers.SAXParser;   

import javax.xml.parsers.SAXParserFactory;   

  

import org.xml.sax.Attributes;   

import org.xml.sax.SAXException;   

import org.xml.sax.helpers.DefaultHandler;   

  

public class SAXPrinter extends DefaultHandler   

{   

  

  /** *//**  

   * 文档开始事件  

   */  

    public void startDocument() throws SAXException   

    {   

        System.out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");   

    }   

       

  /** *//**  

   * 接收处理指令事件  

   */  

    public void processingInstruction(String target, String data) throws SAXException   

    {   

        System.out.println("<?"+target+" "+data+"?>");   

    }   

       

  /** *//**  

   * 元素开始事件  

  * 参数说明:  

   *   uri - 名称空间 URI,如果元素没有任何名称空间 URI,或者没有正在执行名称空间处理,则为空字符串。  

   *   localName - 本地名称(不带前缀),如果没有正在执行名称空间处理,则为空字符串。  

   *   qName - 限定的名称(带有前缀),如果限定的名称不可用,则为空字符串。  

   *   attributes - 附加到元素的属性。如果没有属性,则它将是空的 Attributes 对象。  

   */  

    public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException   

    {   

        System.out.print("<"+qName);//输出元素名称   

        int len=attrs.getLength();//元素属性列表长度   

           

    //利用循环输出属性列表   

        for(int i=0;i<len;i++)   

        {   

            System.out.print(" ");   

            System.out.print(attrs.getQName(i));   

            System.out.print("=\"");   

            System.out.print(attrs.getValue(i));   

            System.out.print("\"");   

        }   

        System.out.print(">");   

    }   

       

  /** *//**  

   * 元素中字符数据事件:接收元素中字符数据  

   * 注意:1.应用程序不要试图读取ch数组指定范围外的数据,(即start至length之外)  

   *      2.有些解析器将使用ignorableWhitespace()方法来报告元素内容中的空白,而不是characters()方法,如:进行有效性验证的解析器  

   */  

    public void characters(char[] ch, int start, int length) throws SAXException   

    {   

        System.out.print(new String(ch,start,length));   

    }   

  

  /** *//**  

   * 结束元素事件  

   */  

    public void endElement(String uri, String localName, String qName) throws SAXException   

    {   

        System.out.print("</"+qName+">");   

    }   

 

    public static void main(String[] args)   

    {   

       SAXParserFactory spf=SAXParserFactory.newInstance();   

           

        try  

        {   

        SAXParser sp=spf.newSAXParser();   

          sp.parse(new File("db.xml"),new SAXPrinter());   

       }   

        catch (Exception e)   

        {   

            e.printStackTrace();   

        }   

    }   

}  

import java.io.File;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class SAXPrinter extends DefaultHandler
{

  /** *//**
   * 文档开始事件
   */
    public void startDocument() throws SAXException
    {
        System.out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
    }
    
  /** *//**
   * 接收处理指令事件
   */
    public void processingInstruction(String target, String data) throws SAXException
    {
        System.out.println("<?"+target+" "+data+"?>");
    }
    
  /** *//**
   * 元素开始事件
   * 参数说明:
   *   uri - 名称空间 URI,如果元素没有任何名称空间 URI,或者没有正在执行名称空间处理,则为空字符串。
   *   localName - 本地名称(不带前缀),如果没有正在执行名称空间处理,则为空字符串。
   *   qName - 限定的名称(带有前缀),如果限定的名称不可用,则为空字符串。
   *   attributes - 附加到元素的属性。如果没有属性,则它将是空的 Attributes 对象。
   */
    public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException
    {
        System.out.print("<"+qName);//输出元素名称
        int len=attrs.getLength();//元素属性列表长度
        
    //利用循环输出属性列表
        for(int i=0;i<len;i++)
        {
            System.out.print(" ");
            System.out.print(attrs.getQName(i));
            System.out.print("=\"");
            System.out.print(attrs.getValue(i));
            System.out.print("\"");
        }
        System.out.print(">");
    }
    
  /** *//**
   * 元素中字符数据事件:接收元素中字符数据
   * 注意:1.应用程序不要试图读取ch数组指定范围外的数据,(即start至length之外)
   *      2.有些解析器将使用ignorableWhitespace()方法来报告元素内容中的空白,而不是characters()方法,如:进行有效性验证的解析器
   */
    public void characters(char[] ch, int start, int length) throws SAXException
    {
        System.out.print(new String(ch,start,length));
    }

  /** *//**
   * 结束元素事件
   */
    public void endElement(String uri, String localName, String qName) throws SAXException
    {
        System.out.print("</"+qName+">");
    }

    public static void main(String[] args)
    {
        SAXParserFactory spf=SAXParserFactory.newInstance();
        
        try
        {
            SAXParser sp=spf.newSAXParser();
            sp.parse(new File("db.xml"),new SAXPrinter());
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

SAX解析实例二
org.xml.sax.ContentHandler接口: 通过实现该接口给出自己的解析实现。
org.xml.sax.ErrorHandler接口:如果SAX应用程序需要实现定制的错误处理,那么它必须实现这个接口,并调用XMLReader对象的setErrorHandler()方法向解析器注册异常处理实例,这样,解析器将通过这个接口报告所有的错误和警告。
ContentHandlerImpl.java

Java代码 复制代码
  1. import org.xml.sax.Attributes;   
  2. import org.xml.sax.ContentHandler;   
  3. import org.xml.sax.Locator;   
  4. import org.xml.sax.SAXException;   
  5.   
  6. public class ContentHandlerImpl implements ContentHandler   
  7. {   
  8.   /** *//**  
  9.    * 文档开始事件  
  10.    */  
  11.   public void startDocument() throws SAXException   
  12.   {   
  13.     System.out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");   
  14.   }   
  15.      
  16.   /** *//**  
  17.    * 接收处理指令事件  
  18.    */  
  19.   public void processingInstruction(String target, String data) throws SAXException   
  20.   {   
  21.     System.out.println("<?"+target+" "+data+"?>");   
  22.   }   
  23.      
  24.   /** *//**  
  25.    * 元素开始事件  
  26.    * 参数说明:  
  27.    *   uri - 名称空间 URI,如果元素没有任何名称空间 URI,或者没有正在执行名称空间处理,则为空字符串。  
  28.    *   localName - 本地名称(不带前缀),如果没有正在执行名称空间处理,则为空字符串。  
  29.    *   qName - 限定的名称(带有前缀),如果限定的名称不可用,则为空字符串。  
  30.    *   attributes - 附加到元素的属性。如果没有属性,则它将是空的 Attributes 对象。  
  31.    */  
  32.   public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException   
  33.   {   
  34.     System.out.print("<"+qName);//输出元素名称   
  35.     int len=attrs.getLength();//元素属性列表长度   
  36.        
  37.     //利用循环输出属性列表   
  38.     for(int i=0;i<len;i++)   
  39.     {   
  40.       System.out.print(" ");   
  41.       System.out.print(attrs.getQName(i));   
  42.       System.out.print("=\"");   
  43.       System.out.print(attrs.getValue(i));   
  44.       System.out.print("\"");   
  45.     }   
  46.     System.out.print(">");   
  47.   }   
  48.      
  49.   /** *//**  
  50.    * 元素中字符数据事件:接收元素中字符数据  
  51.    * 注意:1.应用程序不要试图读取ch数组指定范围外的数据,(即start至length之外)  
  52.    *      2.有些解析器将使用ignorableWhitespace()方法来报告元素内容中的空白,而不是characters()方法,如:进行有效性验证的解析器  
  53.    */  
  54.   public void characters(char[] ch, int start, int length) throws SAXException   
  55.   {   
  56.     System.out.print(new String(ch,start,length));   
  57.   }   
  58.   
  59.   /** *//**  
  60.    * 结束元素事件  
  61.    */  
  62.   public void endElement(String uri, String localName, String qName) throws SAXException   
  63.   {   
  64.     System.out.print("</"+qName+">");   
  65.   }   
  66.   
  67.   public void endDocument() throws SAXException   
  68.   {   
  69.        
  70.   }   
  71.   
  72.   public void endPrefixMapping(String prefix) throws SAXException   
  73.   {   
  74.        
  75.   }   
  76.   
  77.   public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException   
  78.   {   
  79.        
  80.   }   
  81.   
  82.   public void setDocumentLocator(Locator locator)   
  83.   {   
  84.        
  85.   }   
  86.   
  87.   public void skippedEntity(String name) throws SAXException   
  88.   {   
  89.        
  90.   }   
  91.   
  92.   public void startPrefixMapping(String prefix, String uri) throws SAXException   
  93.   {   
  94.        
  95.   }   
  96.   
  97. }   
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;

public class ContentHandlerImpl implements ContentHandler
{
  /** *//**
   * 文档开始事件
   */
  public void startDocument() throws SAXException
  {
    System.out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
  }
  
  /** *//**
   * 接收处理指令事件
   */
  public void processingInstruction(String target, String data) throws SAXException
  {
    System.out.println("<?"+target+" "+data+"?>");
  }
  
  /** *//**
   * 元素开始事件
   * 参数说明:
   *   uri - 名称空间 URI,如果元素没有任何名称空间 URI,或者没有正在执行名称空间处理,则为空字符串。
   *   localName - 本地名称(不带前缀),如果没有正在执行名称空间处理,则为空字符串。
   *   qName - 限定的名称(带有前缀),如果限定的名称不可用,则为空字符串。
   *   attributes - 附加到元素的属性。如果没有属性,则它将是空的 Attributes 对象。
   */
  public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException
  {
    System.out.print("<"+qName);//输出元素名称
    int len=attrs.getLength();//元素属性列表长度
    
    //利用循环输出属性列表
    for(int i=0;i<len;i++)
    {
      System.out.print(" ");
      System.out.print(attrs.getQName(i));
      System.out.print("=\"");
      System.out.print(attrs.getValue(i));
      System.out.print("\"");
    }
    System.out.print(">");
  }
  
  /** *//**
   * 元素中字符数据事件:接收元素中字符数据
   * 注意:1.应用程序不要试图读取ch数组指定范围外的数据,(即start至length之外)
   *      2.有些解析器将使用ignorableWhitespace()方法来报告元素内容中的空白,而不是characters()方法,如:进行有效性验证的解析器
   */
  public void characters(char[] ch, int start, int length) throws SAXException
  {
    System.out.print(new String(ch,start,length));
  }

  /** *//**
   * 结束元素事件
   */
  public void endElement(String uri, String localName, String qName) throws SAXException
  {
    System.out.print("</"+qName+">");
  }

  public void endDocument() throws SAXException
  {
    
  }

  public void endPrefixMapping(String prefix) throws SAXException
  {
    
  }

  public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException
  {
    
  }

  public void setDocumentLocator(Locator locator)
  {
    
  }

  public void skippedEntity(String name) throws SAXException
  {
    
  }

  public void startPrefixMapping(String prefix, String uri) throws SAXException
  {
    
  }

} 

ErrorHandlerImpl.java 

Java代码 复制代码
  1. public class ErrorHandlerImpl implements ErrorHandler   
  2. {   
  3.   
  4.   public void warning(SAXParseException e) throws SAXException   
  5.   {   
  6.     System.out.println("[Warning ]"+getLocationString(e)+":"+e.getMessage());   
  7.   }   
  8.   
  9.   public void error(SAXParseException e) throws SAXException   
  10.   {   
  11.     System.out.println("[Error ]"+getLocationString(e)+":"+e.getMessage());   
  12.   }   
  13.   
  14.   public void fatalError(SAXParseException e) throws SAXException   
  15.   {   
  16.     System.out.println("[Fatal Error ]"+getLocationString(e)+":"+e.getMessage());   
  17.   }   
  18.   
  19.   private String getLocationString(SAXParseException e)   
  20.   {   
  21.     StringBuffer sb=new StringBuffer();   
  22.     String publicId=e.getPublicId();   
  23.     if(publicId!=null)   
  24.     {   
  25.       sb.append(publicId);   
  26.       sb.append(" ");   
  27.     }   
  28.        
  29.     String systemId=e.getSystemId();   
  30.     if(systemId!=null)   
  31.     {   
  32.       sb.append(systemId);   
  33.       sb.append(" ");   
  34.     }   
  35.        
  36.     sb.append(e.getLineNumber());   
  37.     sb.append(":");   
  38.     sb.append(e.getColumnNumber());   
  39.     return sb.toString();   
  40.   }   
  41. }  
public class ErrorHandlerImpl implements ErrorHandler
{

  public void warning(SAXParseException e) throws SAXException
  {
    System.out.println("[Warning ]"+getLocationString(e)+":"+e.getMessage());
  }

  public void error(SAXParseException e) throws SAXException
  {
    System.out.println("[Error ]"+getLocationString(e)+":"+e.getMessage());
  }

  public void fatalError(SAXParseException e) throws SAXException
  {
    System.out.println("[Fatal Error ]"+getLocationString(e)+":"+e.getMessage());
  }

  private String getLocationString(SAXParseException e)
  {
    StringBuffer sb=new StringBuffer();
    String publicId=e.getPublicId();
    if(publicId!=null)
    {
      sb.append(publicId);
      sb.append(" ");
    }
    
    String systemId=e.getSystemId();
    if(systemId!=null)
    {
      sb.append(systemId);
      sb.append(" ");
    }
    
    sb.append(e.getLineNumber());
    sb.append(":");
    sb.append(e.getColumnNumber());
    return sb.toString();
  }
}

SaxParserTest.java 

Java代码 复制代码
  1. import java.io.FileInputStream;   
  2.   
  3. import org.xml.sax.InputSource;   
  4. import org.xml.sax.XMLReader;   
  5. import org.xml.sax.helpers.XMLReaderFactory;   
  6.   
  7. public class SaxParserTest   
  8. {   
  9.   public static void main(String[] args)   
  10.   {   
  11.     try  
  12.     {   
  13.       XMLReader xmlReader=XMLReaderFactory.createXMLReader();   
  14.       //关闭或打开验证   
  15.       xmlReader.setFeature("http://xml.org/sax/features/validation",true);   
  16.       //注册事件处理器   
  17.       xmlReader.setContentHandler(new ContentHandlerImpl());   
  18.       //注册异常处理器   
  19.       xmlReader.setErrorHandler(new ErrorHandlerImpl());   
  20.          
  21.       xmlReader.parse(new InputSource(new FileInputStream("saxdb.xml")));   
  22.     } catch (Exception e)   
  23.     {   
  24.       System.out.println(e.getMessage());   
  25.     }   
  26.   }   
  27. }  
import java.io.FileInputStream;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;

public class SaxParserTest
{
  public static void main(String[] args)
  {
    try
    {
      XMLReader xmlReader=XMLReaderFactory.createXMLReader();
      //关闭或打开验证
      xmlReader.setFeature("http://xml.org/sax/features/validation",true);
      //注册事件处理器
      xmlReader.setContentHandler(new ContentHandlerImpl());
      //注册异常处理器
      xmlReader.setErrorHandler(new ErrorHandlerImpl());
      
      xmlReader.parse(new InputSource(new FileInputStream("saxdb.xml")));
    } catch (Exception e)
    {
      System.out.println(e.getMessage());
    }
  }
}

第二种:DOM解析
DOM中的核心概念就是节点。DOM在分析XML文档时,将将组成XML文档的各个部分(元素、属性、文本、注释、处理指令等)映射为一个对象(节点)。在内存中,这些节点形成一课文档树。整棵树是一个节点,树中的每一个节点也是一棵树(子树),可以说,DOM就是对这棵树的一个对象描述,我们通过访问树中的节点来存取XML文档的内容。
PS:属性节点是附属于元素的,不能被看做是元素的子节点,更不能作为一个单独的节点

DOMPrinter.java

Java代码 复制代码
  1. import org.w3c.dom.Document;   
  2. import org.w3c.dom.NamedNodeMap;   
  3. import org.w3c.dom.Node;   
  4.   
  5. import com.sun.org.apache.xerces.internal.parsers.DOMParser;   
  6.   
  7. public class DOMPrinter   
  8. {   
  9.   public static void main(String[] args)   
  10.   {   
  11.     try  
  12.     {   
  13.       /** *//** 获取Document对象 */  
  14.       DOMParser parser = new DOMParser();   
  15.       parser.parse("db.xml");   
  16.       Document document = parser.getDocument();   
  17.       printNode(document);   
  18.     } catch (Exception e)   
  19.     {   
  20.       e.printStackTrace();   
  21.     }   
  22.   }   
  23.      
  24.   public static void printNode(Node node)   
  25.   {   
  26.     short nodeType=node.getNodeType();   
  27.     switch(nodeType)   
  28.     {   
  29.     case Node.PROCESSING_INSTRUCTION_NODE://预处理指令类型   
  30.       printNodeInfo(node);   
  31.       break;   
  32.     case Node.ELEMENT_NODE://元素节点类型   
  33.       printNodeInfo(node);   
  34.       printAttribute(node);   
  35.       break;   
  36.     case Node.TEXT_NODE://文本节点类型   
  37.       printNodeInfo(node);   
  38.       break;   
  39.     default:   
  40.       break;   
  41.     }   
  42.        
  43.     Node child=node.getFirstChild();   
  44.     while(child!=null)   
  45.     {   
  46.       printNode(child);   
  47.       child=child.getNextSibling();   
  48.     }   
  49.   }   
  50.      
  51.   /** *//**  
  52.    * 根据节点类型打印节点  
  53.    * @param node  
  54.    */  
  55.   public static void printNodeInfo(Node node)   
  56.   {   
  57.     if (node.getNodeType() == Node.ELEMENT_NODE)   
  58.     {   
  59.       System.out.println("NodeName: " + node.getNodeName());   
  60.     }   
  61.     else if (node.getNodeType() == Node.TEXT_NODE)   
  62.     {   
  63.       String value = node.getNodeValue().trim();   
  64.       if (!value.equals(""))   
  65.         System.out.println("NodeValue: " + value);   
  66.       else  
  67.         System.out.println();   
  68.     }else  
  69.     {   
  70.       System.out.println(node.getNodeName()+" : "+node.getNodeValue());   
  71.     }   
  72.   }   
  73.      
  74.   /** *//**  
  75.    * 打印节点属性  
  76.    * @param aNode 节点  
  77.    */  
  78.   public static void printAttribute(Node aNode)   
  79.   {   
  80.     NamedNodeMap attrs = aNode.getAttributes();   
  81.     if(attrs!=null)   
  82.     {   
  83.       for (int i = 0; i < attrs.getLength(); i++)   
  84.       {   
  85.         Node attNode = attrs.item(i);   
  86.         System.out.println("Attribute: " + attNode.getNodeName() + "=\"" + attNode.getNodeValue()+"\"");   
  87.       }   
  88.     }   
  89.   }  
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;

import com.sun.org.apache.xerces.internal.parsers.DOMParser;

public class DOMPrinter
{
  public static void main(String[] args)
  {
    try
    {
      /** *//** 获取Document对象 */
      DOMParser parser = new DOMParser();
      parser.parse("db.xml");
      Document document = parser.getDocument();
      printNode(document);
    } catch (Exception e)
    {
      e.printStackTrace();
    }
  }
  
  public static void printNode(Node node)
  {
    short nodeType=node.getNodeType();
    switch(nodeType)
    {
    case Node.PROCESSING_INSTRUCTION_NODE://预处理指令类型
      printNodeInfo(node);
      break;
    case Node.ELEMENT_NODE://元素节点类型
      printNodeInfo(node);
      printAttribute(node);
      break;
    case Node.TEXT_NODE://文本节点类型
      printNodeInfo(node);
      break;
    default:
      break;
    }
    
    Node child=node.getFirstChild();
    while(child!=null)
    {
      printNode(child);
      child=child.getNextSibling();
    }
  }
  
  /** *//**
   * 根据节点类型打印节点
   * @param node
   */
  public static void printNodeInfo(Node node)
  {
    if (node.getNodeType() == Node.ELEMENT_NODE)
    {
      System.out.println("NodeName: " + node.getNodeName());
    }
    else if (node.getNodeType() == Node.TEXT_NODE)
    {
      String value = node.getNodeValue().trim();
      if (!value.equals(""))
        System.out.println("NodeValue: " + value);
      else
        System.out.println();
    }else
    {
      System.out.println(node.getNodeName()+" : "+node.getNodeValue());
    }
  }
  
  /** *//**
   * 打印节点属性
   * @param aNode 节点
   */
  public static void printAttribute(Node aNode)
  {
    NamedNodeMap attrs = aNode.getAttributes();
    if(attrs!=null)
    {
      for (int i = 0; i < attrs.getLength(); i++)
      {
        Node attNode = attrs.item(i);
        System.out.println("Attribute: " + attNode.getNodeName() + "=\"" + attNode.getNodeValue()+"\"");
      }
    }
  }

DOM生成XML文档:DOMCreateExample.java 

Java代码 复制代码
  1. import java.io.FileNotFoundException;   
  2. import java.io.FileOutputStream;   
  3. import java.io.IOException;   
  4.   
  5. import javax.xml.parsers.DocumentBuilder;   
  6. import javax.xml.parsers.DocumentBuilderFactory;   
  7. import javax.xml.parsers.ParserConfigurationException;   
  8.   
  9. import org.w3c.dom.Document;   
  10. import org.w3c.dom.Element;   
  11.   
  12. import com.sun.org.apache.xml.internal.serialize.XMLSerializer;   
  13.   
  14. pu
分享到:
评论

相关推荐

    xml解析器的源代码

    本资源提供了XML解析器的源代码,这对于理解和实现XML处理机制具有重要价值。 XML解析器是读取XML文档并将其转换为可操作数据结构的关键组件。根据解析方式,XML解析器主要分为两种类型:DOM(Document Object ...

    解析XML的源代码

    解析XML的源代码 解析XML的源代码 解析XML的源代码

    python脚本用于xml解析的源代码

    在这个“python脚本用于xml解析的源代码”项目中,我们可以看到作者利用Python的内置库来解析XML文件,以便提取、操作或转换数据。 XML文件的结构类似于HTML,但更专注于数据而不是展示。Python提供了几个库来处理...

    java xml 解析 源代码

    Java XML解析是Java编程中的一项重要技能,XML(Extensible Markup Language)作为一种可扩展的标记语言,常用于数据交换、配置存储以及结构化数据的表示。本教程将深入讲解如何在Java中解析XML文件,同时提供源代码...

    嵌入式xml解析器源代码

    在本文中,我们将深入探讨嵌入式XML解析器的核心概念、工作原理以及源代码的学习价值。 XML(可扩展标记语言)是一种用于结构化数据交换的标准格式,广泛应用于网络通信、配置文件、数据存储等领域。嵌入式环境中的...

    XML解析brew的源代码

    4. **源代码分析**:提供的源代码可能包含了XML解析的实现,包括创建XML阅读器,设置回调函数,以及在事件触发时处理XML数据的逻辑。通过分析这些代码,我们可以学习如何在实际项目中使用BREW的XML API。 5. **性能...

    精巧的XML解析器pugxml源代码.zip

    这个压缩包"精巧的XML解析器pugxml源代码.zip"包含了PugXML解析器的源代码,这对于学习XML解析机制、理解底层实现以及进行自定义修改非常有帮助。 PugXML的主要特点和优势包括: 1. **小巧高效**:PugXML源代码量小...

    xml解析vc 源代码

    本资源包含的"xml解析vc 源代码"提供了在VC环境下处理XML文件的方法。 XML解析主要有两种方式:DOM(Document Object Model)和SAX(Simple API for XML)。DOM解析器将整个XML文档加载到内存中,形成一个树形结构...

    xml解析和组装源代码

    XML(eXtensible Markup Language)是一...掌握这些XML相关的知识和技术,可以有效地进行XML解析、组装和数据交换,提升软件开发的效率和灵活性。在实际项目中,根据需求和性能要求选择合适的解析和组装方法至关重要。

    XML解析和编辑 源代码

    这个压缩包包含了XML解析和编辑的源代码,可能包含了解析XML文档、创建XML文档、修改XML文档等功能。 首先,我们要理解XML的基本结构。XML文档由元素(Elements)、属性(Attributes)、文本内容(Text Content)等...

    基于C++的xml文档解析器源代码

    本资源提供了基于C++的XML文档解析器的源代码,涵盖了读取、遍历、查找、插入和保存等基本功能,对于学习和理解XML解析原理以及C++编程技巧具有很高的参考价值。 首先,XML文档的基本结构包括元素(Element)、属性...

    xml 解析源代码和应用

    本压缩包包含了一个C#原创的XML解析程序,以及其在实际应用中的例子,帮助我们深入理解XML解析的原理和实践。 XML文档由一系列元素组成,每个元素可以有子元素和属性,通过这些元素,XML可以描述复杂的数据结构。在...

    iPhone IOS XML解析源代码

    本资源"iPhone iOS XML解析源代码"提供了一个深入学习和比较XML解析技术的实例,包含两种不同的解析方法,旨在帮助开发者了解它们的性能差异。 首先,我们来探讨第一种解析方式:NSXMLParser。这是Apple提供的内置...

    XML解析工具- TinyXML2 -源代码 - C++

    作为XML解析器,TinyXML-2具有以下特点: 1. 轻量级且易于集成:它体积小巧,代码简洁,易于集成到各种 C++ 项目中。 2. API简单易用:它提供了简单易用的 API,使得解析和操作 XML 数据变得简单快捷。开发者可以...

    易语言 xml解析 易语言 xml解析 教程 带源码

    易语言XML解析是编程领域中的一个重要主题,尤其对于使用易语言进行开发的程序员来说,理解并掌握XML(可扩展标记语言)的解析方法是至关重要的。XML作为一种结构化数据存储和交换格式,广泛应用于网络通信、配置...

    C写的解析xml文件源代码

    分析这个源码可以帮助理解XML解析的底层工作原理,并提供一个基础的C语言XML处理框架,这对于开发涉及XML的系统或工具非常有价值。 总结来说,C语言实现XML文件解析需要对XML语法有深入理解,同时熟练掌握字符串...

    xml的四种解析方法及源代码.pdf

    每种解析方法都有自己的特点和适用场景,下面将详细介绍这些解析方法以及提供的Java源代码示例。 ### DOM解析 DOM解析器将整个XML文档加载到内存中,并将文档的结构表示为节点和节点树。这意味着开发者可以对XML...

    c++ 解析 xml 源代码

    C++ 解析 XML 源代码教程 XML(Extensible Markup Language)是一种广泛用于存储和传输数据的标准格式,尤其在软件开发中,它被用来结构化数据并进行跨平台通信。C++作为一款强大的编程语言,可以利用各种库来解析...

    xml解析java源代码

    然而,这个压缩包中的"xml解析java源代码"主要依赖于XStream库,它提供了一种更简洁的方式来序列化和反序列化Java对象到XML。 XStream是一个开源库,由Joe Walnes创建,它允许我们将Java对象转换为XML,反之亦然。...

    android三种方式解析xml文件源代码以及说明文档word

    本资料主要涵盖了三种常见的XML解析方式:DOM(Document Object Model)、SAX(Simple API for XML)和Pull解析器,并通过源代码和说明文档详细阐述了它们的工作原理、优缺点以及实际应用。 1. DOM解析: DOM解析器...

Global site tag (gtag.js) - Google Analytics