`
icz
  • 浏览: 7513 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

DOM ,SAX practise

    博客分类:
  • XML
阅读更多
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;

public class DOMTest {
  public static void main(String[] args) {
    try {
    
      DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
    
      DocumentBuilder builder = dbfactory.newDocumentBuilder();
      
      Document doc = builder.parse(new File("operation.xml"));
      
      Element root = doc.getDocumentElement();
      System.out.println("Root Ele" + root.getTagName());
       
      NodeList list = root.getElementsByTagName("operation");
      
      for (int i=0; i < list.getLength() ; i++) {
        
        Element element = (Element)list.item(i);
     // operationName
        String operationName = element.getAttribute("name");
        
        System.out.println("Operation : " +operationName);
      
        NodeList inputParamList = element.getElementsByTagName("input");
        NodeList outputParamList = element.getElementsByTagName("output");
       
        Element inputParamEle = (Element)inputParamList.item(0);
        Element outputParamEle = (Element)outputParamList.item(0);
    
       NodeList inparamList= inputParamEle.getElementsByTagName("param");
       NodeList outparamList1 = outputParamEle.getElementsByTagName("param");
       NodeList outparamList2 = outputParamEle.getElementsByTagName("table");
       
       System.out.println("input Param list: ");
       for(int j=0;j<inparamList.getLength();j++){
    	   Element param = (Element) inparamList.item(j);
    	   
    	   String paramName = param.getAttribute("name");
    	   String paramType = param.getAttribute("type");
    	   System.out.println("\t"+ paramName+"\t\t\t"+paramType);
       }
        
       System.out.println("output Param list: ");
       for (int j=0;j<outparamList1.getLength();j++){
    	   
    	   Element param = (Element) outparamList1.item(j);
    	   
    	   String paramName = param.getAttribute("name");
    	   String paramType = param.getAttribute("type");
    	   System.out.println("\t"+ paramName +"\t\t\t"+paramType);
    	   
    	   
       }
       System.out.println("output Table list :");
       
       for (int k=0;k<outparamList2.getLength();k++){
    	  
    	   
    	   Element tblparam = (Element)outparamList2.item(k);
    	   String tblname = tblparam.getAttribute("name");
    	   System.out.println("----table name : " + tblname);
    	   NodeList nl1 =tblparam.getElementsByTagName("column");
    	   
    	   for(int k1 =0;k1<nl1.getLength();k1++){
    		   Element e1 = (Element)(nl1.item(k1));
    		   
    		   System.out.println(e1.getAttribute("name"));
    	   }
    	   
    	   System.out.println("----End for table : " + tblname);
       }
 
     
 
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}


import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.Locator;
import org.xml.sax.XMLReader;

import org.xml.sax.InputSource;
import org.xml.sax.ext.LexicalHandler;
import org.xml.sax.helpers.DefaultHandler;
import java.io.IOException;

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

public class TestSaxWithLexical extends DefaultHandler implements LexicalHandler
{
  private StringBuffer buf;

  public TestSaxWithLexical()
  {
    super();
  }
  public void setDocumentLocator(Locator locator)
  {
  }
  public void startDocument() throws SAXException
  {
    buf=new StringBuffer();
    System.out.println("*******StartDoc*******");
  }
  public void endDocument() throws SAXException
  {
   System.out.println("*******endDoc*******");
  }


  public void processingInstruction( String target, String instruction )
        throws SAXException
  {
  System.err.println("got " + instruction);
  }
  public void ignorableWhitespace( char[] chars, int start, int length ) throws SAXException
  {
  }



  public void startElement(String namespaceURI,String localName,String qName,Attributes atts)
  {
   // System.out.println("*******StartEle*******");
  
    if (true||qName.equalsIgnoreCase("operation")){
   
      for(int i=0;i<atts.getLength();i++)
        {
           System.out.println(" "+atts.getQName(i)+"\t :"+atts.getValue(i));
          
        }
    }
 
  }

  public void endElement(String namespaceURI,String localName,String fullName )throws SAXException
  {
   //System.out.println("******endEle********" + fullName);
  }
  public void characters( char[] chars, int start, int length )throws SAXException
   {
                      
          buf.append(chars,start,length);
   }

public static void main(String args[])
{
   try{
   
    SAXParserFactory sf  = SAXParserFactory.newInstance();
    SAXParser sp = sf.newSAXParser();
    TestSaxWithLexical testsax=new TestSaxWithLexical();
    XMLReader xmlReader = sp.getXMLReader();
    xmlReader.setProperty("http://xml.org/sax/properties/lexical-handler",
        testsax);
   
 
  sp.parse(new InputSource("operation.xml"),testsax);

   }catch(IOException e)
   {
    e.printStackTrace();
   }catch(SAXException e)
   {
     e.printStackTrace();
   }catch(Exception e)
   {
    e.printStackTrace();
   }

}
public void comment(char[] arg0, int arg1, int arg2) throws SAXException {
// TODO Auto-generated method stub
String str = new String(arg0,arg1,arg2);
System.err.println(str);

}
public void endCDATA() throws SAXException {
// TODO Auto-generated method stub
System.err.println(buf.toString());
System.err.println("EOF CDADA");

}
public void endDTD() throws SAXException {
// TODO Auto-generated method stub

}
public void endEntity(String arg0) throws SAXException {
// TODO Auto-generated method stub

}
public void startCDATA() throws SAXException {
// TODO Auto-generated method stub
System.err.println("Begin CDaTA");

}
public void startDTD(String arg0, String arg1, String arg2) throws SAXException {
// TODO Auto-generated method stub


}
public void startEntity(String arg0) throws SAXException {
// TODO Auto-generated method stub

}
}
分享到:
评论
1 楼 hgbljj 2008-12-05  
 

相关推荐

    基于QT5 qt 处理XML的三种方式 dom sax xmlstream 5个小例子

    基于QT5 qt 处理XML的三种方式 dom sax xmlstream 5个小例子 参考https://blog.csdn.net/p942005405/article/details/79743221

    用DOM SAX JDom dom4j 对xml文档解析实例

    本文将深入探讨DOM、SAX、JDom和dom4j四种流行的Java XML解析器,以及它们在处理XML文档时的特点和用法。 1. DOM(Document Object Model) DOM是W3C推荐的一种解析XML的标准方法。它将XML文档表示为一个树形结构,...

    一些xml开发示例,包括DTD,CSs,xslt,dom sax 等。都可以运行

    本文将深入探讨XML开发中的四个关键概念:DTD(Document Type Definition)、CSS(Cascading Style Sheets)、XSLT(Extensible Stylesheet Language Transformations)以及DOM和SAX解析器。 1. DTD(Document Type...

    dom jdom sax dom4j 原理性能比

    本篇文章将探讨四种处理XML的Java库:DOM、JDOM、SAX和DOM4J,分析它们的原理、性能特点以及适用场景。 首先,我们来了解DOM(Document Object Model)。DOM是W3C组织定义的一种API,它将XML文档解析为一个树形结构...

    DOM.rar_DOM SAX_XML DOM_dom xml java_sax_simple

    DOM(Document Object Model)和SAX(Simple API for XML)是解析XML文档的两种主要方法。 DOM是一种W3C标准,它将XML文档视为一棵树形结构,其中每个节点代表XML文档的一部分。在DOM解析中,整个XML文档被加载到...

    dom和sax对xml的解析

    在Java中,有多种方式可以解析XML文档,其中最常用的是DOM(Document Object Model)和SAX(Simple API for XML)。本篇文章将详细介绍DOM和SAX解析XML的方法,并通过提供的`DomDemo.java`和`SaxDemo.java`示例代码...

    xml_DOM_SAX.rar_DOM_dom xml saxxml_java dom_sax

    在Java中,处理XML文件主要有两种解析器:DOM(Document Object Model)和SAX(Simple API for XML)。这两种解析方式各有特点,适用于不同的场景。 1. DOM解析: DOM解析器将整个XML文档加载到内存中,构建一个树...

    DOM SAX解析XML文档的范例(工程包)

    在处理XML文档时,有两种主要的解析方法:DOM(Document Object Model)和SAX(Simple API for XML)。本工程包“DOM SAX解析XML文档的范例”将帮助我们深入理解这两种解析方式。 **DOM解析:** DOM解析器将整个XML...

    java dom sax XML入门教程

    Java作为一款强大的编程语言,提供了多种处理XML的API,其中包括DOM(Document Object Model)和SAX(Simple API for XML)。本教程将帮助初学者深入理解这两种解析XML的方法。 1. DOM解析器 DOM解析器将整个XML...

    dom解析和sax解析

    DOM(Document Object Model)解析和SAX(Simple API for XML)解析是两种常见的XML文档解析方式,它们在处理XML数据时有不同的策略和优缺点。 DOM解析是一种基于树型结构的XML解析方法。当一个XML文档被DOM解析器...

    XML四种解析方式------DOM SAX JDOM DOM4J

    在处理XML文档时,有多种解析方式,包括DOM、SAX、JDOM和DOM4J。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...

    dom4j下sax解析xml

    DOM(Document Object Model)和SAX(Simple API for XML)是两种主要的XML解析方法。在Java编程中,dom4j库提供了对这两种解析方式的支持。 **DOM解析**: DOM解析器将整个XML文档加载到内存中,创建一个树形结构...

    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细

    常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...

    dom4j基础入门文档(SAX,DOM,XPATH)

    【dom4j基础入门文档(SAX,DOM,XPATH)】 dom4j是一个流行的Java库,专门用于处理XML文档。相较于W3C DOM API,dom4j的优势在于它内置了本地XPath支持,使得XML文档的查询和操作更为简便。本文将深入介绍dom4j的...

    qt使用DOM和SAX两种方式读写XML文件,代码工程demo,亲测可用

    在Qt框架中,处理XML文件是常见的需求,本项目提供了一个使用DOM(Document Object Model)和SAX(Simple API for XML)两种解析方式的示例,帮助开发者理解如何在Qt环境下进行XML文件的读写操作。 首先,DOM是一种...

    SAX与DOM之间的区别

    ### SAX与DOM之间的区别 #### 一、概述 在处理XML文档时,开发人员面临着一个基本的选择:使用DOM(文档对象模型)还是SAX(简单的API for XML)。这两种方法各有优势,选择哪一种取决于具体的应用场景和技术需求...

    jdom,dom,sax架包

    Java XML处理技术是Java开发中不可或缺的一部分,主要包含三种主流的API:JDOM、DOM和SAX。这些库被广泛用于解析、创建和操作XML文档,各有其特点和适用场景。 1. JDOM(Java DOM): JDOM是Java特定的DOM实现,它...

    dom.sax.pull解析

    Ø 1、DOM(org.w3c.dom) Ø “文档对象模型”方式,解析完的Xml将生成一个树状结构的对象。 Ø 2、SAX(org.xml.sax) Ø SimpleAPI for XML,以事件的形式通知程序,对Xml进行解析。 Ø 3、XMLPULL(org.xmlpull.v1) ...

    xml 三种解析方式dom,sax,dom4j

    为了处理XML文档,有三种主要的解析方式:DOM、SAX和DOM4J。每种方法都有其特点和适用场景,下面将详细介绍这三种解析方式。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,构建一个树形...

    DOM与SAX入门

    DOM与SAX入门,适合初学者,理解DOM与SAX,进而web前端开发。

Global site tag (gtag.js) - Google Analytics