java 对xml 基本操作
来源:互联网 发布:cp linux 命令目录 编辑:程序博客网 时间:2024/06/05 11:02
XMLInputFactory 定义用于获取流的工厂的抽象实现
XMLStreamReader 接口允许转发 XML 和对 XML 的只读访问。它被设计为读取 XML 数据的最低层且最有效的方法。
XMLStreamReader 被设计为使用 next() 和 hasNext() 在 XML 上进行迭代。可以使用诸如 getEventType()、getNamespaceURI()、getLocalName() 和 getText() 之类的方法访问数据:
next() 方法会使 reader 读取下一个解析事件。next() 方法返回一个整数,指示刚才读取的事件类型。
访问xml一般操作步骤如下:
InputStream is = XMLTest.class.getClassLoader().getResourceAsStream("books.xml");XMLInputFactory factory = XMLInputFactory.newFactory();//下面是两种方式访问xml//XMLStreamReader reader = factory.createXMLStreamReader(is);XMLEventReader reader = factory.createXMLEventReader(is);
package hb.xml;import java.io.IOException;import java.io.InputStream;import javax.xml.stream.EventFilter;import javax.xml.stream.XMLEventReader;import javax.xml.stream.XMLInputFactory;import javax.xml.stream.XMLStreamConstants;import javax.xml.stream.XMLStreamException;import javax.xml.stream.XMLStreamReader;import javax.xml.stream.events.XMLEvent;import org.junit.Test;public class XMLTest {//books.xml存放的位置是在src目录下面InputStream is = XMLTest.class.getClassLoader().getResourceAsStream("books.xml");XMLInputFactory factory = XMLInputFactory.newFactory();@Test//根据节点类型访问XML里面的数据public void nodeTypeDemo() {try {XMLStreamReader reader = factory.createXMLStreamReader(is);while(reader.hasNext()) {int type = reader.next();//判断节点类型是否是开始或者结束或者文本节点,之后根据情况及进行处理if(type==XMLStreamConstants.START_ELEMENT) {String name = reader.getName().toString();System.out.println(name);//获取节点的属性if(name.equals("book")) {System.out.println(reader.getAttributeName(0)+":"+reader.getAttributeValue(0));}} else if(type==XMLStreamConstants.CHARACTERS) {System.out.println(reader.getText().trim());} else if(type==XMLStreamConstants.END_ELEMENT) {System.out.println("/"+reader.getName());}}} catch (XMLStreamException e) {e.printStackTrace();} finally {try {if(is!=null) is.close();} catch (IOException e) {e.printStackTrace();}}}@Test// 基于迭代模型的操作方式public void eventDemo() {try {XMLEventReader reader = factory.createXMLEventReader(is);while (reader.hasNext()) {XMLEvent event = reader.nextEvent();if (event.isStartDocument()) {System.out.println("startDocument");}if (event.isStartElement()) {String name = event.asStartElement().getName().toString();if ("title".equals(name)) {System.out.println(reader.getElementText());}}}} catch (XMLStreamException e) {e.printStackTrace();}}@Testpublic void filterDemo() {try {XMLEventReader reader = factory.createXMLEventReader(is);factory.createFilteredReader(reader, new EventFilter() {@Override//返回true表示会显示,如果是false则不会显示public boolean accept(XMLEvent xmlevent) {if (xmlevent.isStartDocument()) {String name = xmlevent.asStartElement().getName().toString();System.out.println(name);return true;}return false;}});int num = 0;while(reader.hasNext()) {//通过XMLEvent来获取是否是某种节点类型XMLEvent event = reader.nextEvent();if(event.isStartElement()) {//通过event.asxxx转换节点String name = event.asStartElement().getName().toString();if(name.equals("title")) {System.out.print(reader.getElementText()+":");}if(name.equals("price")) {System.out.print(reader.getElementText()+"\n");}}num++;}System.out.println(num);} catch (XMLStreamException e) {e.printStackTrace();}}}
- java 对xml 基本操作
- java 对 xml 操作
- 对XML文件的基本操作
- c#对xml的支持基本操作
- 对XML文件的基本操作
- JSP中对XML操作基本范例
- 对XML的一些基本操作
- c#对xml的基本操作
- C#对XML的基本操作
- java xml dom基本操作
- java对File基本操作
- java 对redis 基本操作
- java对Redis基本操作
- Java对Redis基本操作
- java对Redis 基本操作
- Java对Redis基本操作
- java对redis基本操作
- java 对redis 基本操作
- A successful Git branching model
- spring + Quartz 入门demo
- springMVC 引入多个配置文件导致默认配置文件失效的问题
- spring 与 mybatis 整合笔记
- XML 和 java对象相互转换
- java 对xml 基本操作
- ACM取石子问题
- dtd 学习笔记
- 3.x 内核新工作队列kworker/n ;current头文件,unrecognized ELF data encoding 0:
- 动态给table 添加 tr(行),实现添加多个对象
- Grid多行tbar
- js数组的操作
- jquery.validate 学习笔记(验证form表单工具)
- 将CSV文件导入到数据的办法