<?xml version="1.0" encoding="utf-8"?>
<classify>
<image>123</image>
<image>456</image>
</classify>
package com.yzsd.demo;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
try {
InputStream in = new FileInputStream(new File("1.xml"));
/*
* root节点是第一个节点不包含任何数据 root节点的第一个子节点是xml的第一个标签
*/
TreeNode root = ParseXml.parseXml(in);
root = root.getChildren().get(0);
for (int i = 0; i < root.getChildren().size(); i++) {
System.out.println(root.getChildren().get(i).getValue());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public static void readTree(TreeNode treeNode) {
System.out.println(treeNode.getAttributes());
for (int i = 0; i < treeNode.getChildren().size(); i++) {
readTree(treeNode.getChildren().get(i));
}
}
}
package com.yzsd.demo;
import java.io.InputStream;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
public class ParseXml {
private static SAXParser saxParser;
static {
SAXParserFactory sParserFactory = SAXParserFactory.newInstance();
try {
saxParser = sParserFactory.newSAXParser();
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
}
public static TreeNode parseXml(InputStream inputStream) {
UserHandler userHandler = new UserHandler();
try {
saxParser.parse(inputStream, userHandler);
} catch (Exception e) {
e.printStackTrace();
}
return userHandler.getRootNode();
}
}
package com.yzsd.demo;
import java.util.Stack;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class UserHandler extends DefaultHandler {
private Stack<TreeNode> mStack;
private TreeNode rootNode;
@Override
public void startDocument() throws SAXException {
mStack = new Stack<TreeNode>();
rootNode = new TreeNode();
mStack.push(rootNode);
super.startDocument();
}
@Override
public void endDocument() throws SAXException {
super.endDocument();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
TreeNode treeNode = new TreeNode();
treeNode.setTagName(qName);
treeNode.setAttributes(attributes);
if (!mStack.isEmpty()) {
mStack.peek().addChild(treeNode);
}
mStack.push(treeNode);
super.startElement(uri, localName, qName, attributes);
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
mStack.pop();
super.endElement(uri, localName, qName);
}
@Override
public void characters(char[] arg0, int arg1, int arg2) throws SAXException {
mStack.peek().setValue(new String(arg0, arg1, arg2));
super.characters(arg0, arg1, arg2);
}
public TreeNode getRootNode() {
return rootNode;
}
}
package com.yzsd.demo;
import java.util.ArrayList;
import java.util.List;
import org.xml.sax.Attributes;
public class TreeNode {
private String tagName;
private String Value;
private List<TreeNode> children;
private Attributes attributes;
public TreeNode() {
children = new ArrayList<TreeNode>();
}
public String getTagName() {
return tagName;
}
public void setTagName(String tagName) {
this.tagName = tagName;
}
public String getValue() {
return Value;
}
public void setValue(String value) {
Value = value;
}
public List<TreeNode> getChildren() {
return children;
}
public void addChild(TreeNode treeNode) {
this.children.add(treeNode);
}
public Attributes getAttributes() {
return attributes;
}
public void setAttributes(Attributes attributes) {
this.attributes = attributes;
}
}
结果:123
456