Chinaunix首页 | 论坛 | 博客
  • 博客访问: 47866
  • 博文数量: 25
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 270
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-13 05:50
文章分类

全部博文(25)

文章存档

2011年(5)

2010年(1)

2009年(19)

我的朋友

分类: LINUX

2011-05-11 13:47:04

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;


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

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

 

public class sample extends DefaultHandler
{

 static private Writer out = null;
 StringBuffer buffer =null;
 
 //开始解析 文档
 @Override
 public void startDocument() throws SAXException
 {
  // TODO Auto-generated method stub
  super.startDocument();
  System.out.println("beginning to parse the XML document");
  emit("");
  newLine();
 }
 
 //结束解析XML文档
 @Override
 public void endDocument() throws SAXException {
  // TODO Auto-generated method stub
  super.endDocument(); 
  System.out.println("parsing is over ......");
  newLine();
  try {
   out.flush();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 @Override
 public void startElement(String uri, String sname, String qname,
   Attributes attributes) throws SAXException {
  // TODO Auto-generated method stub
  super.startElement(uri, sname, qname, attributes);
  
  echoText();
  
  String elementName = sname ;
  if (sname.equals(""))
  {
   elementName = qname ;
   
  }
  else
  {
   elementName = sname ;
   System.out.println("tracking....");
  }
  emit("<"+elementName);
  
  /*
   * 对属性进行处理 (回显)
   */

  if(attributes!=null)
  {
   for(int i=0;i   {
    String attrName = attributes.getLocalName(i);
    if(attrName.equals(""))
    {
     attrName = attributes.getQName(i);
     
    }
    emit(" ");
    emit(attrName+"="+attributes.getValue(i));
   }
  }
  emit(">");
 }
 
 @Override
 public void characters(char[] ch, int start, int length)
   throws SAXException {
  // TODO Auto-generated method stub
  super.characters(ch, start, length);

  String s = new String(ch , start, length);
  
  if(buffer==null)
  {
   buffer=new StringBuffer(s);
  }
  else
  {
   buffer.append(s);
  }
  
 }

 @Override
 public void endElement(String uri, String sname, String qname)
   throws SAXException
 {
  // TODO Auto-generated method stub
  super.endElement(uri, sname, qname);
  
  echoText();
  String elemntName = sname; // element name

       if ("".equals(elemntName)) {
        elemntName = qname; // not namespaceAware
         }
      
         emit("");
  
  
 
 }

 @Override
 public void error(SAXParseException e) throws SAXException {
  // TODO Auto-generated method stub
  super.error(e);
 }


 /*
  *
  *  Utility Method
  *
  */

 void echoText()
 {
  if(buffer==null)
  {
   return;
  }
  String s = buffer + "";
  emit(s);
  buffer = null;
 }
 
 void emit(String s)
 {
  try {
   out.write(s);
   out.flush();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
 
 void newLine()
 {
  String lineEnd = System.getProperty("line.separator");
  try {
   out.write(lineEnd);
   out.flush();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
 
 //---------------------------------------------------------
 //---------------------------------------------------------
 public static void main(String[] args) throws Exception
 {
  System.out.println("start........");
  
  SAXParserFactory saxFactory = SAXParserFactory.newInstance();
  SAXParser saxParser = saxFactory.newSAXParser();

  
  if (args.length!=1) {
   
   System.out.println("error file xml ");
   System.exit(1);
  }
  out = new OutputStreamWriter(System.out,"UTF-8");


  saxParser.parse(args[0], new sample());
  
  
 }
}

 

阅读(261) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~