您的位置:首页 > 其它

使用SAX读取XML文件--(将信息封装到对象)

2016-12-15 10:28 477 查看
实现功能:使用SAX读取contact.xml文件,并将读取到的信息封装到对象中,然后输出;

XML文件:contact.xml

<?xml version="1.0" encoding="utf-8"?>
<contactList>
<contact id="001" name="eric">
<name>张三</name>
<age>20</age>
<phone>134222223333</phone>
<email>zhangsan@qq.com</email>
<qq>432221111</qq>
</contact>
<contact id="002" name="jacky">
<name>eric</name>
<age>20</age>
<phone>134222225555</phone>
<email>lisi@qq.com</email>
<qq>432222222</qq>
</contact>
</contactList>


对象类:Contact.java

package SAX;

public class Contact {
public String id;
public String name;
public String age;
public String phone;
public String email;
public String qq;

public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
@Override
public String toString() {
return "Contact [age=" + age + ", email=" + email + ", id=" + id
+ ", name=" + name + ", phone=" + phone + ", qq=" + qq + "]";
}
}

SAX的处理程序:MyDefaultHandler3.java

package SAX;

import java.util.ArrayList;
import java.util.List;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/*
* SAX的处理程序
*/
public class MyDefaultHandler3 extends DefaultHandler {
//存储所有的联系人的对象
private List<Contact> list = new ArrayList<Contact>();
public List<Contact> getList() {
return list;
}
//保存一个联系人信息
private Contact contact;
//用于临时存储当前读到的标签名
private String curTag;
/*
*思路:
*	1)创建Contact对象
*	2)  把每个contact标签内容存入到Contact对象
*	3)把Contact对象放到List中
*/

public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
curTag = qName;
//读取到contact的开始标签创建Contact对象
if("contact".equals(qName)) {
contact = new Contact();
//设置id值
contact.setId(attributes.getValue("id"));
}
}

@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
//当前文本内容
String content = new String(ch,start,length);
if("name".equals(curTag)) {
contact.setName(content);
}

if("age".equals(curTag)) {
contact.setAge(content);
}

if("phone".equals(curTag)) {
contact.setPhone(content);
}

if("email".equals(curTag)) {
contact.setEmail(content);
}

if("qq".equals(curTag)) {
contact.setQq(content);
}
}

@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
//设置空是为了避免空格和换行设置到对象时属性中
curTag = null;
//读到contact的结束标签放入List中
if("contact".equals(qName)) {
list.add(contact);
}
}
}

主程序:Demo_sax2.java

package SAX;

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

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

import org.xml.sax.SAXException;

public class Demo_sax2 {
public static void main(String[] args) throws Exception {
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
MyDefaultHandler3 handler = new MyDefaultHandler3();
parser.parse(new File("./src/contact.xml"), handler);
List<Contact> list = handler.getList();
for(Contact contact : list) {
System.out.println(contact);
}
}
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: