java解析XML之StAX

  XML解析的另外一种方式是StAX,相比于SAX需要安装事件处理器,StAX需要循环来迭代所有的事件。

下面是一个Demo:

package com.app.stax;

import java.io.File;
import java.io.FileInputStream;

import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;

public class StaxDemo {

	public static void main(String[] args) throws Exception {

		// 第一步:构建XMLStreamReader
		XMLInputFactory factory = XMLInputFactory.newFactory();
		XMLStreamReader reader = factory
				.createXMLStreamReader(new FileInputStream(new File(
						"src/font.xml")));
		// 第二部:迭代处理
		while (reader.hasNext()) {
			int event = reader.next();
			//处理开始标签
			if (event == XMLStreamConstants.START_ELEMENT) {
				String name = reader.getLocalName().trim();
				System.out.print("<" + name);
				if (name.equals("size")) {
					String attrValue = reader.getAttributeValue(null, "unit");
					System.out.print(" unit=\"" + attrValue + "\"");
				}
				System.out.print(">");
			}
			//处理结束标签
			if (event == XMLStreamConstants.END_ELEMENT) {
				System.out.print("</" + reader.getLocalName() + ">");
			}
			//处理文本
			if (event == XMLStreamConstants.CHARACTERS) {
				System.out.print(reader.getText());
			}
		}

	}
}


命名空间的处理默认是开启的,关闭处理可以使用:

factory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, false);

java解析XML之StAX

你可能感兴趣的:(java,xml,StAX)