简单SAX封闭(解析自定义XML")
来源:互联网 发布:软件专利技术交底书 编辑:程序博客网 时间:2024/04/29 11:35
<?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;@Overridepublic void startDocument() throws SAXException {mStack = new Stack<TreeNode>();rootNode = new TreeNode();mStack.push(rootNode);super.startDocument();}@Overridepublic void endDocument() throws SAXException {super.endDocument();}@Overridepublic 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);}@Overridepublic void endElement(String uri, String localName, String qName)throws SAXException {mStack.pop();super.endElement(uri, localName, qName);}@Overridepublic 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
- 简单SAX封闭(解析自定义XML")
- SAX简单解析XML
- 简单SAX解析XML
- xml的sax简单解析
- SAX解析XML 简单例子
- SAX解析xml简单实例
- sax解析xml简单实例
- 简单使用SAX解析XML
- xml解析(SAX)
- java简单解析xml之SAX解析
- SAX解析XML文件-采用自定义布局
- XML解析(一),SAX解析XML
- 一个SAX解析xml的简单程序。
- SAX方式解析XML的简单方法
- 简单工厂模式、DOM,SAX ---解析XML
- 简单的利用sax解析xml
- SAX解析XML文件的简单应用
- 使用SAX解析简单的XML数据
- 线性表的链式存储结构的实现
- [名词解释]IPI: Inter-Processor Interrupt(处理器之间的中断)
- 分布式系统领域经典论文翻译集
- 二叉树判断子树问题
- java的用tcp协议写的一个通信的例子
- 简单SAX封闭(解析自定义XML")
- HTML5+CSS3 表格设计(Table)
- 研究了一下模拟退火
- Memcached学习笔记——windows上初步使用(与java结合)
- XML和HTML的区别
- Memcached学习笔记——windows上初步使用(与java结合)
- Memcached学习笔记——windows上初步使用(与php结合)
- 判断ERP软件是否适用的五大招数
- java语言中的26个细节