Using Xerces 2 Java edition in your application

I share my expercies  in running 

 

Step1: download  Xerces-J-bin.2.11.0.zip from www.apache.org 

 

Step2: You extract ZIP files .

 

 

 

Step3: run samples

 

 

run -> cmd 

 

go to directory of   Xerces-J-bin

 

command line:

(1)java -classpath xercesImpl.jar;xml-apis.jar;xercesSamples.jar  sax.Counter -p org.apache.xerces.parsers.SAXParser  data/personal.xml

data/personal.xml: 31 ms (37 elems, 18 attrs, 140 spaces, 128 chars)

 

(2)java -classpath xercesImpl.jar;xml-apis.jar;xercesSamples.jar  sax.Writer  data/personal.xml

 

(3)java -classpath xercesImpl.jar;xml-apis.jar;xercesSamples.jar  sax.DocumentTracer   data/personal.xml

 

 

 

Step4: run your own java project . like this :

│  .classpath

│  .project

│  Info.xml

│  personal-schema.xml

│  personal.dtd

│  personal.xml

│  personal.xsd

├─.settings

│      org.eclipse.jdt.core.prefs

├─bin

│  ├─com

│  │  └─kylin

│  │      └─form

│  │              MainWindow.class

│  │

│  └─sax

│      └─helpers

│              AttributesImpl$ListNode.class

│              AttributesImpl.class

├─lib

│      xercesImpl.jar

│      xml-apis.jar

└─src

    ├─com

    │  └─kylin

    │      └─form

    │              MainWindow.java

    │

    └─sax

        └─helpers

                AttributesImpl.java

 

MainWindow.java

 

 

package com.kylin.form;

 

import java.io.OutputStreamWriter;

 

import org.xml.sax.Attributes;

import org.xml.sax.InputSource;

import org.xml.sax.Locator;

import org.xml.sax.SAXException;

import org.xml.sax.XMLReader;

import org.xml.sax.helpers.DefaultHandler;

import org.xml.sax.helpers.XMLReaderFactory;

 

public class MainWindow extends DefaultHandler{

 

    /**

    * @param args

    * @throws SAXException 

    * @throws Exception 

    */

    private Locator locator;

    private int index1=0;

    private int index2=0;

 

 

 

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

        // TODO 自动生成方法存根

        //System.out.print( "SAX Event: CHARACTERS[ " ); 

 

        System.out.print("本书<<");

        try { 

        OutputStreamWriter outw = new OutputStreamWriter(System.out); 

        outw.write( ch, start,length ); 

        outw.flush(); 

        } catch (Exception e) { 

        e.printStackTrace(); 

        } 

 

        System.out.println(">>的目录");

        //System.out.println( " ]" ); 

    }

 

    public void endDocument() throws SAXException {

        // TODO 自动生成方法存根

        System.out.println( "解析结束:" ); 

    }

 

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

        // TODO 自动生成方法存根

        //System.out.println( "SAX Event: END ELEMENT[ " + localName + " ]" ); 

        //this.index2=0;

        if(qName.equalsIgnoreCase("chapter"))

            this.index2=0;

    }

    public void setDocumentLocator(Locator locator) {

        // TODO 自动生成方法存根

        this.locator=locator;

    }

    public void startDocument() throws SAXException {

        // TODO 自动生成方法存根

        System.out.println( "解析开始: " ); 

    }

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

        // TODO 自动生成方法存根

 

        //System.out.println( "SAX Event: START ELEMENT[ " + localName + " ]" );

        if(qName.equalsIgnoreCase("chapter")){

            index1++;

        for ( int i = 0; i < atts.getLength(); i++ ){ 

            //System.out.println(atts.getLength());

            String attName=atts.getQName(i);

            if(attName.equalsIgnoreCase("title")){

                System.out.println("第"+index1+"章:"+atts.getValue(i));

            }

            }

    }

 

        if(qName.equalsIgnoreCase("topic")){

            index2++;

        for ( int i = 0; i < atts.getLength(); i++ ){ 

            String attName=atts.getQName(i);

            if(attName.equalsIgnoreCase("name")){

                System.out.println("     第"+index2+"部分:"+atts.getValue(i));

            }

            }

        }

    }

    public static void main(String[] args) throws Exception {

        // TODO 自动生成方法存根

 

        String vendorParserClass= "org.apache.xerces.parsers.SAXParser";

//        String xmlURI="http://localhost:8080/TestXml/contents.xml";

        String xmlURI="Info.xml";

        XMLReader reader = 

                XMLReaderFactory.createXMLReader(vendorParserClass);

        reader.setContentHandler(new MainWindow());

        InputSource inputSource=new InputSource(xmlURI);

         reader.parse(inputSource);   

    }

}

 

result:

 

解析开始: 

本书<<Boss>>的目录

本书<<Big>>的目录

本书<<chief@foo.com>>的目录

本书<<Worker>>的目录

本书<<One>>的目录

本书<<one@foo.com>>的目录

本书<<Worker>>的目录

本书<<Two>>的目录

本书<<two@foo.com>>的目录

本书<<Worker>>的目录

本书<<Three>>的目录

本书<<three@foo.com>>的目录

本书<<Worker>>的目录

本书<<Four>>的目录

本书<<four@foo.com>>的目录

本书<<Worker>>的目录

本书<<Five>>的目录

本书<<five@foo.com>>的目录

解析结束:

 

全部评论

相关推荐

06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务