当前位置: 代码迷 >> Web前端 >> Using Xerces 二 Java edition in your application
  详细解决方案

Using Xerces 二 Java edition in your application

热度:669   发布时间:2012-11-23 00:03:43.0
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>>的目录

解析结束:

?

  相关解决方案