StAX解析XML

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> 

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