xml.. SAXParserFactory

从文件当中读取

public void parseReadFile(String pathname) {
  SAXParser parser;
  SAXParserFactory factory = SAXParserFactory.newInstance();
   parser = factory.newSAXParser();//有抛出异常
   File file = new File(pathname);
   parser.parse(file, new DefaultHandler());

  //parser.parse(inputStream, new DefaultHandler());//从数据流输入  public void parseInputStream(InputStream inputStream)
  }

............................................................................................

 使用sax组件解析xml元素名称和内容

package com.mingrisoft.SAX_demo;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

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

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

/**
 * @author bwm
 *
 */
public class ElementValueSAXParsing extends DefaultHandler {

 private List<String> list = new ArrayList<String>();

 private String value;

 /**
  * 读取当前元素的内容,过滤回制表符、空格符、回车符、换行符
  */
 @Override
 public void characters(char[] ch, int start, int length)
   throws SAXException {
  // TODO Auto-generated method stub
  value = String.valueOf(ch, start, length);
  value = value.replace("\t", "");
  value = value.replace(" ", "");
  value = value.replace("\n", "");
  value = value.replace("\r", "");
 }

 /**
  * 读取元素结束,把元素名称和元素内容保存在list中
  */
 @Override
 public void endElement(String uri, String localName, String qName)
   throws SAXException {
  // TODO Auto-generated method stub
  list.add(localName + ":" + value);
 }

 public List<String> getList() {
  return this.list;
 }

 /**
  * 通过文件读取XML
  *
  * @param pathname
  *            文件路径
  */
 public void parseReadFile(String pathname) {
  SAXParser parser;
  SAXParserFactory factory = SAXParserFactory.newInstance();
  try {
   factory.setValidating(true);
   factory.setNamespaceAware(true);
   parser = factory.newSAXParser();
   File file = new File(pathname);
   parser.parse(file, this);
  } catch (ParserConfigurationException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (SAXException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

 }

 public static void main(String[] arg) {

  String pathname = "D:/eclipseWorkspace/second/xmldemo/books.xml";
  ElementValueSAXParsing elementSAXParsing = new ElementValueSAXParsing();
  elementSAXParsing.parseReadFile(pathname);
  System.out.println("元素名称和元素内容");
  System.out.println(elementSAXParsing.getList());
 }
}

................................................获取属性

   System.out.println("属性名称和属性值");
   elementSAXParsing.getAttribute();
 

 .......................................获取值

  getNodeName() 
  getNodeValue()

.......................................检查

  factory.setValidating(true);                是否格式正确
  factory.setNamespaceAware(true);      是否导入命名空间

.......................................检查错误的方法

继承DefaultHandler

public void warning(SAXParseException exception) throws SAXException {
  // TODO Auto-generated method stub
  System.out.println("warning");
  System.out.println("错误位置:" + exception.getLineNumber() + "行"
    + exception.getColumnNumber() + "列");
  System.out.println("错误信息:" + exception.getMessage());
 }

 public void error(SAXParseException exception) throws SAXException {
  // TODO Auto-generated method stub
  System.out.println("error");
  System.out.println("错误位置:" + exception.getLineNumber() + "行"
    + exception.getColumnNumber() + "列");
  System.out.println("错误信息:" + exception.getMessage());
 }

 public void fatalError(SAXParseException exception) throws SAXException {
  // TODO Auto-generated method stub
  System.out.println("fdatalError");
  System.out.println("错误位置:" + exception.getLineNumber() + "行"
    + exception.getColumnNumber() + "列");
  System.out.println("错误信息:" + exception.getMessage());

 }

 

public static void main(String[] arg) {

  String pathname = "xmldemo/books.xml";
  ErrorSAXParsing elementSAXParsing = new ErrorSAXParsing();
  elementSAXParsing.parseReadFile(pathname);
 }

posted @ 2012-11-04 20:46  dahaidao101  阅读(378)  评论(0编辑  收藏  举报