java中使用SAX解析器解析xml文件
来源:互联网 发布:js如何获取访客ip 编辑:程序博客网 时间:2024/06/05 15:27
深圳装修网
假设我要读取的xml文件是limaoyuan.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person>
<name>李茂源</name>
<age>24</age>
</person>
<person>
<name>哈哈</name>
<age>22</age>
</person>
</persons>
继承DefaultHandler的解析器
package com.xmlservice;
import java.util.ArrayList;
import java.util.List;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import domain.Person;
public class PersonHandler extends DefaultHandler {
private List<Person> persons=null;
private Person person=null;
private String tag="";
public List<Person> getPersons() {
return persons;
}
@Override
public void startDocument() throws SAXException {
persons=new ArrayList<Person>();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if("person".equals(qName)){
person=new Person();
}
tag=qName;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if(person!=null){
String data=new String(ch,start,length);
if("name".equals(tag)){
person.setName(data);
}else if("age".equals(tag)){
person.setAge(Integer.parseInt(data));
}
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if(person!=null&&"person".equals(qName)){
persons.add(person);
person=null;
}
tag=null;
}
}
业务类,使用自写的处理器,对xml解析
package com.xmlservice;
import java.io.InputStream;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import domain.Person;
public class XMLParserService {
public static List<Person> readXml(InputStream inStream)throws Exception{
//sax解析工厂
SAXParserFactory factory=SAXParserFactory.newInstance();
//构造SAX解析器
SAXParser parser=factory.newSAXParser();
PersonHandler handler=new PersonHandler();
parser.parse(inStream, handler); //使用指定的handler对流inStream进行解析
List<Person> persons=handler.getPersons();//返回内容
return persons;
}
}
测试类
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;
import org.junit.Test;
import com.xmlservice.XMLParserService;
import domain.Person;
public class XMLParserTest {
@Test //使用了JUnit4进行测试
public void testReadXml(){
try{
//文件的位置在该工程的WebRoot/xmlfile/文件下
File file=new File("WebRoot/xmlfile/limaoyuan.xml");
InputStream inStream=new FileInputStream(file);
//注意,我的limaoyuan.xml这个文件是放在工程的src目录下的,当然你也可以读取其它目录的文件
//InputStream inStream=XMLParserTest.class.getClassLoader().getResourceAsStream("limaoyuan.xml");
List<Person> persons=XMLParserService.readXml(inStream);
for(Person person:persons){
System.out.println(person.toString());
}
}catch(Exception e){
e.printStackTrace();
}
}
}
- java中使用SAX解析器解析xml文件
- 使用SAX解析XML文件(SAX解析)
- android中使用SAX解析xml文件
- Java 使用SAX解析xml文件
- Java 使用SAX解析xml文件
- Java使用Sax解析xml文件
- java使用SAX接口解析xml文件
- java中使用SAX解析XML
- 在java中使用sax解析xml
- Java 中使用 SAX 解析 XML 文档
- 使用SAX解析XML文件
- 使用sax解析xml文件
- 使用SAX解析XML文件
- 使用SAX解析XML文件
- 使用SAX解析XML文件
- 使用SAX解析XML文件
- 使用SAX解析XML文件
- 使用SAX解析XML文件
- HDU-2444 二分图匹配
- 卡扎菲终于over了
- java中使用MD5加密算法进行加密
- InfoPath中的Rich Text Box中如何加“回车”
- 为什么我按CTRL+空格键就会关闭程序
- java中使用SAX解析器解析xml文件
- Parse CPU to Parse Elapsd%
- VB.NET之旅(四)—类和结构
- DELPHI的美化插件VCLskin
- MySQL配置文件my.cnf中文版
- NSObject相关定义
- hibernate 二级缓存
- jquery ui tabs详解(中文)
- SQL语句的添加、删除、修改多种方法