1、dom解析
public class DomDemo implements IParseXML {
public static final String FILE_PATH = "E:\\workspace\\myjava\\src\\file\\users.xml";
// public static int counter = 0;
private List<User> users = new ArrayList<User>();
public static void main(String[] args)
{
DomDemo domDemo = new DomDemo();
List<User> users = domDemo.parseXML();
if(null != users && users.size() > 0)
{
for (int i = 0; i < users.size(); i++)
{
System.out.println(users.get(i).toString());
}
}
}
@Override
public List<User> parseXML() {
File file = new File(FILE_PATH);
if (!file.exists()) {
System.out.println("file is not exist!");
return null;
}
try {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
.newInstance();
Document document = documentBuilderFactory.newDocumentBuilder()
.parse(file);
Element element = document.getDocumentElement();
NodeList userNodes = element.getElementsByTagName("user");
for (int i = 0; i < userNodes.getLength(); i++)
{
Element userElement = (Element)userNodes.item(i);
// System.out.println("length = "+userNodes.getLength());
// System.out.println(++counter);
User user = new User();
user.setId(userElement.getAttribute("id"));
NodeList userAttrs = userElement.getChildNodes();
for (int j = 0; j < userAttrs.getLength(); j++)
{
//user 属性节点
Node userAttr = userAttrs.item(j);
if(userAttr.getNodeType() == Node.ELEMENT_NODE)
{
if("name".equals(userAttr.getNodeName()))
{
user.setName(userAttr.getFirstChild().getNodeValue());
}else if("age".equals(userAttr.getNodeName()))
{
user.setAge(userAttr.getFirstChild().getNodeValue());
}else if("sex".equals(userAttr.getNodeName()))
{
user.setSex(userAttr.getFirstChild().getNodeValue());
}else
{
System.out.println("err");
}
}
}
users.add(user);
}
return users;
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
2、SAX解析
package com.jlwang.xmlParse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
import com.jlwang.model.User;
public class SAXDemo implements IParseXML {
// http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/17/3082949.html
@Override
public List<User> parseXML() {
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
FileInputStream fis = null;
try {
String filePath = "E:\\workspace\\myjava\\src\\file\\users.xml";
SAXParser saxParser = saxParserFactory.newSAXParser();
File file = new File(filePath);
if (!file.exists()) {
System.out.println("file is not exist!");
return null;
}
fis = new FileInputStream(file);
XMLSAXHander handler = new XMLSAXHander();
saxParser.parse(fis, handler);
List<User> users = handler.getUsers();
return users;
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
public static void main(String[] args)
{
SAXDemo saxParserDemo = new SAXDemo();
List<User> users = saxParserDemo.parseXML();
if(null != users && users.size() > 0)
{
for (int i = 0; i < users.size(); i++)
{
System.out.println(users.get(i).toString());
}
}
}
}
class XMLSAXHander extends DefaultHandler {
Stack<String> tags = new Stack<String>();
boolean hasAttribute = false;
Attributes attributes = null;
private List<User> users = null;
private User user = null;
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
// super.characters(ch, start, length);
String content = new String(ch,start,length);
//
if(hasAttribute && attributes.getLength() > 0)
{
user = new User();
user.setId(attributes.getValue(0));
}
//
if(content.trim().length() <= 0)
{
return;
}
String tag = tags.peek();
if("name".equals(tag))
{
user.setName(content);
}else if("age".equals(tag))
{
user.setAge(content);
}else if("sex".equals(tag))
{
user.setSex(content);
}else
{
System.out.println("err");
}
}
@Override
public void endElement(String uri, String localName, String name)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, name);
if("user".equals(name))
{
users.add(user);
}
}
@Override
public void startElement(String uri, String localName, String name,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, name, attributes);
tags.add(name);
if(attributes.getLength() > 0)
{
this.attributes = attributes;
this.hasAttribute = true;
}
}
@Override
public void startDocument() throws SAXException
{
super.startDocument();
users = new ArrayList<User>();
}
@Override
public void setDocumentLocator(Locator locator)
{
super.setDocumentLocator(locator);
}
@Override
public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.ignorableWhitespace(ch, start, length);
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
}
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
}
JDOM 解析
package com.jlwang.xmlParse;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import com.jlwang.model.User;
public class JDomDemo implements IParseXML {
public static final String FILE_PATH = "E:\\workspace\\myjava\\src\\file\\users.xml";
private List<User> usersList = new ArrayList<User>();
public static void main(String[] args)
{
JDomDemo jDemo = new JDomDemo();
List<User> users = jDemo.parseXML();
if(null != users && users.size() > 0)
{
for (int i = 0; i < users.size(); i++)
{
System.out.println(users.get(i).toString());
}
}
}
@Override
public List<User> parseXML() {
SAXBuilder saxBuilder = new SAXBuilder();
File file = new java.io.File(FILE_PATH);
if(!file.exists())
{
return null;
}
try {
Document document = saxBuilder.build(file);
Element users = document.getRootElement();
List userList = users.getChildren("user");
for (int i = 0; i < userList.size(); i++)
{
Element user = (Element)userList.get(i);
User userInstance = new User();
userInstance.setId(user.getAttributeValue("id"));
List userInfoList = user.getChildren();
for (int j = 0; j < userInfoList.size(); j++)
{
Element userInfo = (Element)userInfoList.get(j);
// System.out.println(((Element)userInfoList.get(j)).getValue());
if("name".equals(userInfo.getName()))
{
userInstance.setName(userInfo.getValue());
}else if("age".equals(userInfo.getName()))
{
userInstance.setAge(userInfo.getValue());
}else if("sex".equals(userInfo.getName()))
{
userInstance.setSex(userInfo.getValue());
}else
{
System.out.println("err");
}
}
usersList.add(userInstance);
}
return usersList;
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public List<User> getUsersList() {
return usersList;
}
public void setUsersList(List<User> usersList) {
this.usersList = usersList;
}
}
Dom4j 解析xml
package com.jlwang.xmlParse;
import java.io.File;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.jlwang.model.User;
public class Dom4jDemo implements IParseXML {
public static final String FILE_PATH = "E:\\workspace\\myjava\\src\\file\\users.xml";
private List<User> users = new ArrayList<User>();
public List<User> getUsers() {
return users;
}
public void setUsers(List<User> users) {
this.users = users;
}
@Override
public List<User> parseXML()
{
File file = new java.io.File(FILE_PATH);
if(!file.exists())
{
return null;
}
SAXReader saxReader = new SAXReader();
try
{
Document document = saxReader.read(file);
Element usersElement = document.getRootElement();
for (Iterator iterator = usersElement.elementIterator();iterator.hasNext();)
{
Element userElement = (Element)iterator.next();
User user = new User();
user.setId(userElement.attributeValue("id"));
for (Iterator<Element> iterator2 = userElement.elementIterator();iterator2.hasNext();)
{
Element userInfoElement = iterator2.next();
if("name".equals(userInfoElement.getName()))
{
user.setName(userInfoElement.getTextTrim());
}else if("age".equals(userInfoElement.getName()))
{
user.setAge(userInfoElement.getTextTrim());
}else if("sex".equals(userInfoElement.getName()))
{
user.setSex(userInfoElement.getTextTrim());
}else
{
System.out.println("err");
}
}
users.add(user);
}
return users;
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* @param args
*/
public static void main(String[] args)
{
Dom4jDemo dom4jDemo = new Dom4jDemo();
List<User> users = dom4jDemo.parseXML();
for (int i = 0; i < users.size(); i++)
{
System.out.println(users.get(i).toString());
}
}
}