加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SAX解析XML文件示例

发布时间:2020-12-16 05:18:59 所属栏目:百科 来源:网络整理
导读:package cn.com.songjy.test.xml;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import javax.xml.parsers.ParserConfigurationException;import javax.xml.parsers.SAXParser;import javax.xml.parsers
package cn.com.songjy.test.xml;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

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

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class SAXDemo {

	public SAXDemo() throws FileNotFoundException,ParserConfigurationException,SAXException,IOException {
		printQuestions("product.xml");
	}

	public static void main(String[] args) {
		try {
			new SAXDemo();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void printQuestions(String xmlfile)
			throws ParserConfigurationException,FileNotFoundException,IOException {

		SAXParserFactory factory = SAXParserFactory.newInstance();
		SAXParser parser = factory.newSAXParser();

		parser.parse(new FileInputStream(xmlfile),new DefaultHandler() {

			private boolean isQuestions = false;

			public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException {
				if (qName.equals("questions")) {
					isQuestions = true;
				}
			}

			public void characters(char[] ch,int start,int length)
					throws SAXException {
				if (isQuestions) {
					String str = new String(ch,start,length);

					System.out.println(str);

				}
			}

			public void endElement(String uri,String qName)
					throws SAXException {
				if (qName.equals("questions")) {
					isQuestions = false;
				}
			}

		});

	}
}


product.xml

<?xml version="1.0" encoding="UTF-8"?>
<product id="200">
	<name>UML Exam Simulator</name>
	<price>100</price>
	<topics name="UML">
		<topic id="UML_SM">
			<name>Static Modeling</name>
			<questions>100</questions>
		</topic>
		<topic id="UML_AE">
			<name>Architecture</name>
			<questions>80</questions>
		</topic>
		<topic id="UML_DM">
			<name>Dynamic Modeling</name>
			<questions>67</questions>
		</topic>
	</topics>
</product>


使用sax解析xml文件,并自动根据实体类class得到映射后的实体类list集合

SAX对底层操作的事例

JDOM对XML文档的读写增删改转换等

DOM4J对XML文档的读写增删改等

对XML文档操作的通用CRUD(JDOM版)

如何利用JDOM把XML文档全部解析出来

java XML -- SAX和StAX分析XML

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读