用SAX方式解析XML

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

	<property name="log.dir" value="dir" />
	<property name="bufferedIO" value="false" />
	<property name="immediateFlush" value="true" />
	<property name="encoding" value="UTF-8" />
	<property name="append" value="true" />
	
	<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
		<layout class="ch.qos.logback.classic.PatternLayout">
			<Pattern>patter</Pattern>
		</layout>
	</appender>
	
	   
    <logger name="logger">
		<level value="DEBUG" />
		<appender-ref ref="FILE" />
	</logger>
	
	<root>
		<level value="INFO" />
		<appender-ref ref="FILE" />
	</root>

</configuration>
 

解析上述文档的实例代码:

import java.io.FileReader;

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

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
/**
 * 重载DefaultHandler类的方法
 * 以拦截SAX事件通知。
 * 关于所有有效事件,见org.xml.sax.ContentHandler
 * @author Administrator
 *
 */
public class XmlReaderTest extends DefaultHandler {

	
	public void startDocument() throws SAXException {
		System.out.println("解析文档开始");
	}

	public void endDocument() throws SAXException {
		System.out.println("解析文档结束");
	}

	public void startElement(String namespaceURI, String localName,
			String qName, Attributes attr) throws SAXException {
	
		System.out.print("\r\n<"+qName);
		
		if(attr != null && attr.getLength() > 0){//节点的属性
			for(int i=0; i<attr.getLength(); i++){
				System.out.print(" "+attr.getQName(i)+"='"+attr.getValue(i)+"'");
			}
		}
		System.out.print(">");

	}

	public void endElement(String namespaceURI, String localName, String qName)
			throws SAXException {
		System.out.print("</" + qName + ">\r\n");
		
		
	}

	public void characters(char[] ch, int start, int length)
			throws SAXException {
		
		String value = new String(ch, start, length).trim();
		System.out.print(value);
		
	}

	public static void main(String[] argv) {

		try {

			 SAXParserFactory spFactory = SAXParserFactory.newInstance();
			 SAXParser sParser = spFactory.newSAXParser();
			 sParser.parse(new InputSource(new FileReader("c://test.xml")), new XmlReaderTest());
			 
			// 建立SAX 2解析器...
//			XMLReader xr = XMLReaderFactory
//					.createXMLReader("org.apache.xerces.parsers.SAXParser");

			// 安装ContentHandler...
			//xr.setContentHandler(new XmlReaderTest());

			// 解析文件...
			//xr.parse(new InputSource(new FileReader("test.xml")));

		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}

 输出为:

解析文档开始

<configuration>
<property name='log.dir' value='dir'></property>

<property name='bufferedIO' value='false'></property>

<property name='immediateFlush' value='true'></property>

<property name='encoding' value='UTF-8'></property>

<property name='append' value='true'></property>

<appender name='CONSOLE' class='ch.qos.logback.core.ConsoleAppender'>
<layout class='ch.qos.logback.classic.PatternLayout'>
<Pattern>patter</Pattern>
</layout>
</appender>

<logger name='logger'>
<level value='DEBUG'></level>

<appender-ref ref='FILE'></appender-ref>
</logger>

<root>
<level value='INFO'></level>

<appender-ref ref='FILE'></appender-ref>
</root>
</configuration>
解析文档结束

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值