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);
}