StAX解析XML

系统 1633 0
Java代码 复制代码
  1. package  com.xml.parseXml;   
  2.   
  3. import  java.io.InputStream;   
  4.   
  5. import  javax.xml.stream.XMLEventReader;   
  6. import  javax.xml.stream.XMLInputFactory;   
  7. import  javax.xml.stream.events.StartElement;   
  8. import  javax.xml.stream.events.XMLEvent;   
  9.   
  10. import  com.xml.bean.Address;   
  11. import  com.xml.bean.ReadXmlFileStream;   
  12.   
  13. public   class  StAXParseXml {   
  14.      private   static  Address address =  new  Address();   
  15.   
  16.      public   static   void  main(String[] args) {   
  17.   
  18.          long  lasting = System.currentTimeMillis();   
  19.   
  20.          try  {   
  21.             InputStream in = ReadXmlFileStream.getXmlFileStream();   
  22.   
  23.             XMLInputFactory xmlif = XMLInputFactory.newInstance();   
  24.              // 用于解析 XML 事件的顶层接口   
  25.             XMLEventReader reader = xmlif.createXMLEventReader(in);   
  26.              // 处理标记事件的基础事件接口   
  27.             XMLEvent event =  null ;   
  28.   
  29.              while  (reader.hasNext()) {   
  30.                 event = reader.nextEvent();   
  31.                  if  (event.isStartElement()) {  // 起始元素   
  32.                     StartElement startElt = event.asStartElement();   
  33.                      if  (startElt.getName().getLocalPart().equals( "no" )) {   
  34.                         address.setNo(reader.getElementText());   
  35.                     }  else   if  (startElt.getName().getLocalPart().equals( "addr" )) {   
  36.                         address.setAddr(reader.getElementText());   
  37.                         System.out.println(address);   
  38.                     }   
  39.                 }  else   if  (event.isCharacters()) {  // 文本内容   
  40.                      // 相邻标记之间都是文本内容   
  41.                     System.out.println( "解析的是文本内容:"   
  42.                             + event.asCharacters().getData());   
  43.                 }  else   if  (event.isEndElement()) {  // 结束元素   
  44.                     System.out.println( "解析的是结束标记:"   
  45.                             + event.asEndElement().getName());   
  46.                 }   
  47.             }   
  48.         }  catch  (Exception e) {   
  49.             e.printStackTrace();   
  50.         }   
  51.         System.out.println( "运行时间:"  + (System.currentTimeMillis() - lasting)   
  52.                 +  " 毫秒" );   
  53.   
  54.     }   
  55.   
  56. }  
Java代码 复制代码
  1. package  com.xml.parseXml;   
  2.   
  3. import  java.io.InputStream;   
  4.   
  5. import  javax.xml.stream.XMLEventReader;   
  6. import  javax.xml.stream.XMLInputFactory;   
  7. import  javax.xml.stream.events.StartElement;   
  8. import  javax.xml.stream.events.XMLEvent;   
  9.   
  10. import  com.xml.bean.Address;   
  11. import  com.xml.bean.ReadXmlFileStream;   
  12.   
  13. public   class  StAXParseXml {   
  14.      private   static  Address address =  new  Address();   
  15.   
  16.      public   static   void  main(String[] args) {   
  17.   
  18.          long  lasting = System.currentTimeMillis();   
  19.   
  20.          try  {   
  21.             InputStream in = ReadXmlFileStream.getXmlFileStream();   
  22.   
  23.             XMLInputFactory xmlif = XMLInputFactory.newInstance();   
  24.              // 用于解析 XML 事件的顶层接口   
  25.             XMLEventReader reader = xmlif.createXMLEventReader(in);   
  26.              // 处理标记事件的基础事件接口   
  27.             XMLEvent event =  null ;   
  28.   
  29.              while  (reader.hasNext()) {   
  30.                 event = reader.nextEvent();   
  31.                  if  (event.isStartElement()) {  // 起始元素   
  32.                     StartElement startElt = event.asStartElement();   
  33.                      if  (startElt.getName().getLocalPart().equals( "no" )) {   
  34.                         address.setNo(reader.getElementText());   
  35.                     }  else   if  (startElt.getName().getLocalPart().equals( "addr" )) {   
  36.                         address.setAddr(reader.getElementText());   
  37.                         System.out.println(address);   
  38.                     }   
  39.                 }  else   if  (event.isCharacters()) {  // 文本内容   
  40.                      // 相邻标记之间都是文本内容   
  41.                     System.out.println( "解析的是文本内容:"   
  42.                             + event.asCharacters().getData());   
  43.                 }  else   if  (event.isEndElement()) {  // 结束元素   
  44.                     System.out.println( "解析的是结束标记:"   
  45.                             + event.asEndElement().getName());   
  46.                 }   
  47.             }   
  48.         }  catch  (Exception e) {   
  49.             e.printStackTrace();   
  50.         }   
  51.         System.out.println( "运行时间:"  + (System.currentTimeMillis() - lasting)   
  52.                 +  " 毫秒" );   
  53.   
  54.     }   
  55.   
  56. }  
    package com.xml.parseXml;

import java.io.InputStream;

import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;

import com.xml.bean.Address;
import com.xml.bean.ReadXmlFileStream;

public class StAXParseXml {
	private static Address address = new Address();

	public static void main(String[] args) {

		long lasting = System.currentTimeMillis();

		try {
			InputStream in = ReadXmlFileStream.getXmlFileStream();

			XMLInputFactory xmlif = XMLInputFactory.newInstance();
			// 用于解析 XML 事件的顶层接口
			XMLEventReader reader = xmlif.createXMLEventReader(in);
			// 处理标记事件的基础事件接口
			XMLEvent event = null;

			while (reader.hasNext()) {
				event = reader.nextEvent();
				if (event.isStartElement()) { // 起始元素
					StartElement startElt = event.asStartElement();
					if (startElt.getName().getLocalPart().equals("no")) {
						address.setNo(reader.getElementText());
					} else if (startElt.getName().getLocalPart().equals("addr")) {
						address.setAddr(reader.getElementText());
						System.out.println(address);
					}
				} else if (event.isCharacters()) { // 文本内容
					// 相邻标记之间都是文本内容
					System.out.println("解析的是文本内容:"
							+ event.asCharacters().getData());
				} else if (event.isEndElement()) { // 结束元素
					System.out.println("解析的是结束标记:"
							+ event.asEndElement().getName());
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("运行时间:" + (System.currentTimeMillis() - lasting)
				+ " 毫秒");

	}

}

  

 

依赖的类:

1.Address .java

Java代码 复制代码
  1. package  com.xml.bean;   
  2.   
  3. public   class  Address {   
  4.   
  5.      private  String no;   
  6.      private  String addr;   
  7.      /**  
  8.      * @return the no  
  9.      */   
  10.      public  String getNo() {   
  11.          return  no;   
  12.     }   
  13.      /**  
  14.      * @param no the no to set  
  15.      */   
  16.      public   void  setNo(String no) {   
  17.          this .no = no;   
  18.     }   
  19.      /**  
  20.      * @return the addr  
  21.      */   
  22.      public  String getAddr() {   
  23.          return  addr;   
  24.     }   
  25.      /**  
  26.      * @param addr the addr to set  
  27.      */   
  28.      public   void  setAddr(String addr) {   
  29.          this .addr = addr;   
  30.     }   
  31.      @Override   
  32.      public  String toString() {   
  33.          return   "编号:"  +  this .no +  ",地址:"  +  this .addr;   
  34.     }   
  35.        
  36.        
  37. }  
Java代码 复制代码
  1. package  com.xml.bean;   
  2.   
  3. public   class  Address {   
  4.   
  5.      private  String no;   
  6.      private  String addr;   
  7.      /**  
  8.      * @return the no  
  9.      */   
  10.      public  String getNo() {   
  11.          return  no;   
  12.     }   
  13.      /**  
  14.      * @param no the no to set  
  15.      */   
  16.      public   void  setNo(String no) {   
  17.          this .no = no;   
  18.     }   
  19.      /**  
  20.      * @return the addr  
  21.      */   
  22.      public  String getAddr() {   
  23.          return  addr;   
  24.     }   
  25.      /**  
  26.      * @param addr the addr to set  
  27.      */   
  28.      public   void  setAddr(String addr) {   
  29.          this .addr = addr;   
  30.     }   
  31.      @Override   
  32.      public  String toString() {   
  33.          return   "编号:"  +  this .no +  ",地址:"  +  this .addr;   
  34.     }   
  35.        
  36.        
  37. }  
    package com.xml.bean;

public class Address {

	private String no;
	private String addr;
	/**
	 * @return the no
	 */
	public String getNo() {
		return no;
	}
	/**
	 * @param no the no to set
	 */
	public void setNo(String no) {
		this.no = no;
	}
	/**
	 * @return the addr
	 */
	public String getAddr() {
		return addr;
	}
	/**
	 * @param addr the addr to set
	 */
	public void setAddr(String addr) {
		this.addr = addr;
	}
	@Override
	public String toString() {
		return "编号:" + this.no + ",地址:" + this.addr;
	}
	
	
}

  

 2.ReadXmlFileStream .java

Java代码 复制代码
  1. /**  
  2.  *   
  3.  */   
  4. package  com.xml.bean;   
  5.   
  6. import  java.io.InputStream;   
  7.   
  8. public   class  ReadXmlFileStream {   
  9.   
  10.      private   static   final  String XML_FILE =  "com/xml/bean/addresses.xml" ;   
  11.   
  12.      public   static  InputStream getXmlFileStream() {   
  13.          return  Thread.currentThread().getContextClassLoader()   
  14.                 .getResourceAsStream(XML_FILE);   
  15.     }   
  16.   
  17. }  
Java代码 复制代码
  1. /**  
  2.  *   
  3.  */   
  4. package  com.xml.bean;   
  5.   
  6. import  java.io.InputStream;   
  7.   
  8. public   class  ReadXmlFileStream {   
  9.   
  10.      private   static   final  String XML_FILE =  "com/xml/bean/addresses.xml" ;   
  11.   
  12.      public   static  InputStream getXmlFileStream() {   
  13.          return  Thread.currentThread().getContextClassLoader()   
  14.                 .getResourceAsStream(XML_FILE);   
  15.     }   
  16.   
  17. }  
    /**
 * 
 */
package com.xml.bean;

import java.io.InputStream;

public class ReadXmlFileStream {

	private static final String XML_FILE = "com/xml/bean/addresses.xml";

	public static InputStream getXmlFileStream() {
		return Thread.currentThread().getContextClassLoader()
				.getResourceAsStream(XML_FILE);
	}

}

  

 

被解析的XML结构:

addresses.xml

Xml代码 复制代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < addresses >   
  3.      < value >   
  4.          < no > A100 </ no >   
  5.          < addr > 广州天河区天河路 </ addr >   
  6.      </ value >   
  7.      < value >   
  8.          < no > A101 </ no >   
  9.          < addr > 广州天河区五山路 </ addr >   
  10.      </ value >   
  11. </ addresses >   
Xml代码 复制代码
  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < addresses >   
  3.      < value >   
  4.          < no > A100 </ no >   
  5.          < addr > 广州天河区天河路 </ addr >   
  6.      </ value >   
  7.      < value >   
  8.          < no > A101 </ no >   
  9.          < addr > 广州天河区五山路 </ addr >   
  10.      </ value >   
  11. </ addresses >  

StAX解析XML


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论