`

XML文件解析初学习

    博客分类:
  • Java
阅读更多

下面是要解析的xml文件:

<?xml version="1.0" encoding="GB2312"?>

	<mp3s>
		<mp3>
			<name>
				AAA
			</name>
			<time>
				11111111
			</time>
		</mp3>
		
		<mp3>
			<name>
				BBB
			</name>
			<time>
				22222222
			</time>
		</mp3>
	</mp3s>

 

第一种方法:用DOM解析(不需要使用别的jar包):

package cn.lifx.xml.parse;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class DomTest 
{
	private static final String path = "D:\\workspace\\XMLParseTest\\test.xml";
	private static DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
	
	public static void main(String[] args)
	{
		File f = new File(path);
		
		try 
		{
			DocumentBuilder builder = factory.newDocumentBuilder();
			
			Document doc = builder.parse(f);
			
			NodeList values = doc.getElementsByTagName("mp3");
			
			for(int i=0; i<values.getLength(); i++)
			{
				System.out.println("name: " + doc.getElementsByTagName("name").item(i).getFirstChild().getNodeValue());
				
				System.out.println("time: " + doc.getElementsByTagName("time").item(i).getFirstChild().getNodeValue());
			}
			
		} catch(FileNotFoundException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch(SAXException e) {
			e.printStackTrace();
		} catch(IOException e) {
			e.printStackTrace();
		}
	}
}

 

第二种方法:用SAX(Simple API for XML)解析,需要使用sax.jar包

package cn.lifx.xml.parse;

import java.util.Stack;

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;

public class SaxTest extends DefaultHandler
{
	private static final String path = "D:\\workspace\\XMLParseTest\\test.xml";
	private static Stack<String> tags = new Stack<String>();

	public SaxTest() 
	{
		super();
	}

	public static void main(String args[]) 
	{
		SAXParserFactory factory = SAXParserFactory.newInstance();
		
		try 
		{
			SAXParser parser = factory.newSAXParser();

			parser.parse(new InputSource(path), new SaxTest());

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

	public void characters(char ch[], int start, int length) throws SAXException 
	{
		while(!tags.isEmpty())
		{
			String tag = tags.pop();
			
			if(tag.equals("name")) 
			{
				System.out.println("name:" + new String(ch, start, length));
			}
			else if(tag.equals("time")) 
			{
				System.out.println("time: " + new String(ch, start, length));
			}		
		}
	}

	public void startElement(String uri, String localName, String qName, Attributes attrs) 
	{
		tags.push(qName);
	}
}

 

 

第三种方法:使用jdom,需要下载jdom.jar包

package cn.lifx.xml.parse;

import java.io.File;
import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class JDomTest 
{
	private static final String path = "D:\\workspace\\XMLParseTest\\test.xml";
	
	public static void main(String[] args)
	{
		File f = new File(path);
		
		SAXBuilder builder = new SAXBuilder();
		
		Document doc = null;
		try 
		{
			doc = builder.build(f);
			
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		if(doc != null)
		{
			Element element = doc.getRootElement();
			
			List values = element.getChildren();
			
			for(int i=0; i<values.size(); i++)
			{
				System.out.println("name: " + ((Element)values.get(i)).getChild("name").getText());
				
				System.out.println("time: " + ((Element)values.get(i)).getChild("time").getText());
			}
		}
	}
}

 

 

第四种方法:使用dom4j,需要下载dom4j.jar包

package cn.lifx.xml.parse;

import java.io.File;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dom4jTest 
{
	public static void main(String[] args)
	{
		String path = "D:\\workspace\\XMLParseTest\\test.xml";
		
		File f = new File(path);
		
		SAXReader reader = new SAXReader();
		
		try 
		{
			Document doc = reader.read(f);
			Element root = doc.getRootElement();
			Element element;
			
			for(Iterator i=root.elementIterator("mp3"); i.hasNext();)
			{
				element = (Element) i.next();
				
				System.out.println("name: " + element.elementText("name"));
				System.out.println("time: " + element.elementText("time"));
			}
			
			
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
}

 

 

 

 

0
0
分享到:
评论

相关推荐

    xml.rar_XML 文档 解析_XML 解析_XML文档

    xml文档的解析,对初学习者来说是一个很好的借鉴

    XML解析、读取

    一个java读取XML文件的小例子,适合新人学习XML解析

    java解析xml及4种常用解析比较

    然而由于使用DOM解析器的时候需要处理整个XML文档,所以对性能和内存的要求比较高,尤其是遇到很大的XML文件的时候。由于它的遍历能力,DOM解析器常用于XML文档需要频繁的改变的服务中。 SAX解析器采用了基于事件的...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

     好了,通过第三章的学习,我们已经了解了一些XML和DTD的基本术语,但是我们还不知道怎样来写这些文件,需要遵循什么样的语法,在下一章,将重点介绍有关撰写XML和DTD文档的语法。 第四章 XML语法 七.DTD的语法...

    VS2008 LINQ基础教程

    LINQ初体验之LINQ to Object 1 一步一步学Linq to sql(一):预备知识 4 一步一步学Linq to sql...四、加载和解析XML内容 90 六、遍历内存中的XML文档 90 七、修改 XML文档 92 使用linq to xml 快速创建自己的Rss 93

    LINQ详细教程

    LINQ教程 1 LINQ初体验之LINQ to Object 1 一步一步学Linq to sql(一):预备知识 3 ...四、加载和解析XML内容 89 六、遍历内存中的XML文档 89 七、修改 XML文档 91 使用linq to xml 快速创建自己的Rss 92

    LINQ中文教程LINQ中文教程

    LINQ初体验之LINQ to Object 1 一步一步学Linq to sql(一):预备知识 4 一步一步学Linq to sql...四、加载和解析XML内容 90 六、遍历内存中的XML文档 90 七、修改 XML文档 92 使用linq to xml 快速创建自己的Rss 93

    LINQ中文教程word格式

    LINQ初体验之LINQ to Object 1 一步一步学Linq to sql(一):预备知识 2 一步一步学Linq to sql...四、加载和解析XML内容 42 六、遍历内存中的XML文档 42 七、修改 XML文档 43 使用linq to xml 快速创建自己的Rss 44

    LINQ基础教程(中文版) 适合初学者

    What‘s LINQ? Language Integrated Query 是也。说得再明白一些,这是编程语言的一种新特性,能够...四、加载和解析XML内容 90 六、遍历内存中的XML文档 90 七、修改 XML文档 92 使用linq to xml 快速创建自己的Rss 93

    LINQ中文教程(WORD格式)

    What‘s LINQ? Language Integrated Query 是也。说得再明白一些,这是编程语言的一种新特性,能够...四、加载和解析XML内容 90 六、遍历内存中的XML文档 90 七、修改 XML文档 92 使用linq to xml 快速创建自己的Rss 93

    LINQ中文系列教程

    What‘s LINQ? Language Integrated Query 是也。说得再明白一些,这是编程语言的一种新特性,能够...四、加载和解析XML内容 90 六、遍历内存中的XML文档 90 七、修改 XML文档 92 使用linq to xml 快速创建自己的Rss 93

    亮剑.NET深入体验与实战精要2

    本书集实用性、思想性、趣味性于一体,内容共分为技术基础总结、系统架构设计思想及项目实战解析三部分,随书所附光盘收录大量实例代码及独家披露的商业系统,供读者参考学习。 本书适合于.NET初、中级开发人员参考...

    亮剑.NET深入体验与实战精要3

    本书集实用性、思想性、趣味性于一体,内容共分为技术基础总结、系统架构设计思想及项目实战解析三部分,随书所附光盘收录大量实例代码及独家披露的商业系统,供读者参考学习。 本书适合于.NET初、中级开发人员参考...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    8.8.2 struts.xml文件配置出错 8.9 精彩回顾 第9章 庖丁解牛 ——揭密Struts2高级技术 9.1 本章学习任务 9.1.1 本章知识体系 9.1.2 实例开发任务 9.2 OGNL表达式语言 9.2.1 认识OGNL 9.2.2 Struts2框架中的OGNL ...

    iuhyiuhkjh908u0980

    以下是我的web.xml文件: &lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;web-app version="2.4" xmlns="http://java.sun.com/xml/ns/ ... by cycy80 2008-02-03 回复 (2) Ext+spring+dwr查询数据库的值无 ... 各位大哥,...

    Spring高级之注解驱动开发视频教程

    n 高级特性-自定义PropertySourceFactory实现解析yaml配置文件 n 源码分析-BeanFactory类视图和常用工厂说明 n 源码分析-AnnotationConfigApplicationContext的register方法 n 源码分析-...

    Web安全深度剖析(张柄帅)

    1.2 如何更好地学习Web安全 4 第2章 深入HTTP请求流程 6 2.1 HTTP协议解析 6 2.1.1 发起HTTP请求 6 2.1.2 HTTP协议详解 7 2.1.3 模拟HTTP请求 13 2.1.4 HTTP协议与HTTPS协议的区别 14 2.2 截取HTTP请求 15 2.2.1 ...

    精通Qt4编程(第二版)源代码

    \14.1.3 使用DOM写XML文件 352 \14.2 SAX 354 \14.3 基于流的XML API 359 \14.4 小结 365 \第15章 模型/视图结构 366 \15.1 模型/视图结构与MVC设计 \15.1 模式 366 \15.1.1 模型 366 \15.1.2 视图 367 \...

    精通qt4编程(源代码)

    \14.1.3 使用DOM写XML文件 352 \14.2 SAX 354 \14.3 基于流的XML API 359 \14.4 小结 365 \第15章 模型/视图结构 366 \15.1 模型/视图结构与MVC设计 \15.1 模式 366 \15.1.1 模型 366 \15.1.2 视图 367 \15.1.3 代理...

    Google Android SDK开发范例大全(第3版) 1/5

    每个范例后面均有扩展学习,在学习范例应用的同时延伸思考。汲取专家经验,指引入门捷径。 移动网络设备(MID,Mobile Internet Device)的发展趋势锐不可当,其中以智能手机最受瞩目。 《Google Android SDK开发...

Global site tag (gtag.js) - Google Analytics