`

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
分享到:
评论

相关推荐

    21天学习XML第3版(CHM)

    5. **DOM和SAX解析器**:了解这两种XML解析方式的区别,DOM将整个XML文档加载到内存中,而SAX则采用事件驱动的方式,适合处理大型XML文件。 6. **XML与Web服务**:XML在Web服务中的应用,如SOAP(简单对象访问协议...

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

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

    XML Classification

    1. **XML文档解析**:正确解析XML文档是整个分类过程的基础。通常需要使用专门的XML解析库来处理复杂的嵌套结构和命名空间问题。 2. **特征工程**:有效的特征提取对于提高分类器的准确性至关重要。这一步骤可能...

    XMLSpy2012 中文版

    XMLSpy2012中文版是一款专为XML编程和网页...无论你是初涉XML的新手,还是寻求提高的专业开发者,都可以通过这款软件深入理解XML的各个方面,并将其应用到实际项目中。下载并安装XMLSpy2012,开始你的XML编程之旅吧。

    XMl初解(适合初学者的介入)

    3. **验证与解析**:学习如何使用XML解析器验证文档的正确性,并解析数据。 4. **XPath和XSLT**:掌握XPath用于选取XML节点,XSLT用于转换XML文档。 5. **实践应用**:尝试将XML应用于实际项目,如构建小型数据交换...

    XML编程从入门到精通

    在本文中,我们将深入探讨XML的基础概念、语法特性、解析方式以及在实际开发中的应用,帮助初、中、高级学员全面掌握XML编程。 一、XML基础 XML的全称为可扩展标记语言,它的主要特点是自描述性和结构化。每个XML...

    Flash+xml+asp源码(1)

    2. **XML数据解析**:学习如何在ActionScript中读取和解析XML文件,以获取和显示数据。 3. **XML与Flash的数据绑定**:掌握如何将XML数据动态绑定到Flash组件,实现内容的实时更新。 4. **ASP与XML的交互**:理解...

    基于ASP的Ajax+XML简单房产程序 v1.0(适合学习ajax+xml).zip

    3. XML文件:存储房产数据或其他结构化信息。 4. CSS文件:定义页面样式。 5. ASP.NET相关文件(如果使用ASP.NET):如.aspx,.cs,.dll等。 6. 图片和其他资源文件:如图片、图标等。 7. 数据库文件(如Access或SQL...

    VOC数据集xml to yolov4需要的txt文件

    这个脚本会读取原始的XML文件,解析边界框信息,然后根据YOLOv4的格式要求,将其写入新的TXT文件中。 最后,`read_img_to_txt.py`脚本可能是用于读取图像文件,并将其信息与之前的TXT标注文件相结合。在训练YOLOv4...

    flash+xml简约的mp3播放器flash素材

    通过编辑XML文件,可以轻松地改变播放器的曲目,而无需重新编译或修改Flash源代码。XML的灵活性和易于解析的特性使其成为动态内容的理想选择。 该播放器的运作原理是:Flash程序读取XML文件,获取其中的MP3文件路径...

    基于ASP的XML ASP 留言本 v1.0 Build 20220706.zip

    3. 数据展示:当用户访问页面时,ASP脚本读取XML文件,解析其中的留言数据,并动态生成HTML,显示在页面上。 4. 后台管理:管理员可以通过特定的接口,利用ASP脚本对XML文件进行操作,如删除、编辑留言等。 此外,...

    Office2007初体验系列课程(3):Office2007新文件格式: OpenXML

    5. **word、excel或ppt目录**:根据文档类型,包含文档内容的XML文件和其他资源。 三、OpenXML的优势 1. **可扩展性**:由于基于XML,OpenXML允许开发者自定义和扩展元素,以满足特定需求。 2. **透明性**:XML的...

    XmlBeans初体验

    可能包括创建Schema、实例化Java对象、解析XML文件、序列化和反序列化数据等步骤。 7. **性能比较**:博主可能对比了XmlBeans与其他XML处理库(如JAXB、DOM、SAX、StAX等)的性能,讨论了在不同场景下选择XmlBeans...

    可以全屏的Flash+xml相册

    在Flash中,XML文件可以用来存储相册的元数据,如图片的URL、标题、描述等,使得数据可以与Flash影片分离,方便管理和更新。 3. **Flash+xml相册的工作原理**:在Flash+xml相册中,Flash影片读取XML文件中的数据来...

    蛋疼的xsl教程

    然而,XML本身并不提供样式,所以在浏览器中直接打开XML文件,内容将以纯文本形式显示,不具备HTML那样的样式。要让XML文档具有类似HTML的显示效果,我们需要借助CSS(Cascading Style Sheets)或者XSL(eXtensible ...

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

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

    FLASH+XML立体展示的相册代码

    在“FLASH+XML立体展示的相册代码”中,Flash应用首先会加载XML文件,解析其中的数据,然后根据这些数据动态地创建相册界面。每个图片项可能包含其URL、缩略图、标题和描述等信息。在用户交互时,例如点击或滑动,...

Global site tag (gtag.js) - Google Analytics