Java中Xml解析(四种方法)

1、DOM,Document Object Model,基于DOM的XML分析器将XML文档转换成一个对象模型的集合(DOC树),通过对此模型操作实现对XML文档数据的操作,可以在任何时候对XML文档的任何一部分数据进行访问。

DOC强制使用树模型来访问XML文档中信息

很灵活,当XML文档较大时对内存需求比较高,而且对结构复杂的DOC树的遍历也很耗时,对机器要求比较高。

  // step 1: 获得dom解析器工厂(工作的作用是用于创建具体的解析器)  
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();  
          
//      System.out.println("class name: " + dbf.getClass().getName());  
          
        // step 2:获得具体的dom解析器  
        DocumentBuilder db = dbf.newDocumentBuilder();  
          
//      System.out.println("class name: " + db.getClass().getName());  
          
        // step3: 解析一个xml文档,获得Document对象(根结点)  
        Document document = db.parse(new File("candidate.xml"));  
          
        NodeList list = document.getElementsByTagName("PERSON");  
          

  

2、Sax,Simple APIs for XML,提供的是顺序访问模式,快速读写XML数据的方式。

 //step1: 获得SAX解析器工厂实例  
        SAXParserFactory factory = SAXParserFactory.newInstance();  
          
        //step2: 获得SAX解析器实例  
        SAXParser parser = factory.newSAXParser();  
          
        //step3: 开始进行解析  
        parser.parse(new File("student.xml"), new MyHandler())

  

3、JDOM,一个开源项目,基于树形结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作

import java.io.File;  
import java.io.FileOutputStream;  
import java.util.List;  
  
import org.jdom.Attribute;  
import org.jdom.Document;  
import org.jdom.Element;  
import org.jdom.input.SAXBuilder;  
import org.jdom.output.Format;  
import org.jdom.output.XMLOutputter;  
  
public class JDomTest2  
{  
    public static void main(String[] args) throws Exception  
    {  
        SAXBuilder builder = new SAXBuilder();  
          
        Document doc = builder.build(new File("jdom.xml"));  
          
        Element element = doc.getRootElement();  
          
        System.out.println(element.getName());  
          
        Element hello = element.getChild("hello");  
          
        System.out.println(hello.getText());  
          
        List list = hello.getAttributes();  
          
        for(int i = 0 ;i < list.size(); i++)  
        {  
            Attribute attr = (Attribute)list.get(i);  
              
            String attrName = attr.getName();  
            String attrValue = attr.getValue();  
              
            System.out.println(attrName + "=" + attrValue);  
        }  
          
        hello.removeChild("world");  
          
        XMLOutputter out = new XMLOutputter(Format.getPrettyFormat().setIndent("    "));  
          
          
        out.output(doc, new FileOutputStream("jdom2.xml"));       
          
    }  
}

 

4、Dom4j

posted on 2016-04-05 11:13  发给华盛顿和发动机号  阅读(3058)  评论(0编辑  收藏  举报