博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java解析XML与生成XML文件
阅读量:6291 次
发布时间:2019-06-22

本文共 4468 字,大约阅读时间需要 14 分钟。

XML是eXtensible Markup Language(可扩展标记语言)的简写形式,它是一种元标记语言(meta-markup language),也就是说它没有一套能够适用于各个领域中所有用户的固守的标签和元素,相反,它允许开发者根据自已的需要定义自已的元素,XML中的X(eXtensible)就是说明了这一点。

它的特点有:

1、XML使用Unicode字符集,可生成英文、中文、希腊文或梵文等多种语言。
2、可将多个来源(包括其他XML文档和二进制文件)汇合进一个XML文档。
3、可利用DTD或Schema(模式)管理一致性问题。DTD主要用于文档型文档,Schema主要用数据型文档。
4、具有很好的扩展性,可定义自已的元素和属性。
5、通过XML可从关系数据库管理系统中提取数据到结构化文档。它还被设计成可对各种数据对象进行操作。
6、在一个设计良好的XML应用中,XML标记不涉及文档如何显示,只表示文档的结构。
XML被设计用来存储、支持和交换数据,而不是用来显示数据的。通常,XML被用于数据交换,而不是数据存储。下图就很好的表示了xml作为电子数据交换的统一格式:

XML文档是什么?它有时是一个文件,有时是关系数据库中的一条记录,有时是由Object Request Broker(对象请求代理程序)传送的一个对象,有时是到达网络接口的一个字节流。XML文档可使不同系统、不同平台的数据实现统一接口,这就是XML真正的威力所在。下面列举几个使用XML的领域:

1、文档设计和管理,可利用XML维护公司的文档资料。
2、Web开发,利用XHTML和XSLT实现的Web页面扩展性更好,更容易维护。
3、数据库应用和程序开发,可从数据库中提取数据并生成XML文档,实现信息的跨平台、跨系统沟通。
4、定义其它语言,WML和WAP就是用通过XML建立的。

XML不是什么?

1、XML只是一种标记语言,不是一种编程语言。不存在一种编译器,把XML文档转化成可执行二进制代码。
2、XML不是一种网络传输协议,但通过网络协议传输的数据格式则可以是XML格式的。
3、XML不是数据库,不能替代Oracle或MySQL这类的关系数据库管理系统。
下面我们就来使用java代码来实现对XML文件的操作吧。
1、解析已经存在的XML文件:
下面的xml文件名称为target.xml,保存在我们的项目目录下,

解析代码:

package com.tiger.SAX;import java.io.File;import java.util.Iterator;import java.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.SAXReader;public class SAXTexst {
public static void main(String[] args) throws DocumentException { // TODO Auto-generated method stub SAXReader reader=new SAXReader(); Document document=reader.read(new File("target.xml")); //get the root Element Element rootElement=document.getRootElement(); print(rootElement.getName()); /*@Method 1 //get child elements with Iterator function for(Iterator i=rootElement.elementIterator();i.hasNext();){ Element element=(Element)i.next(); print(element.getName()); //if you want to get the clild's attributes for(Iterator j=element.attributeIterator();j.hasNext();){ Attribute attribute=(Attribute) j.next(); print(attribute.getName()+"-->>"+attribute.getValue()); } */ /** * So if you want to get All the element,just recurrence it; */ /*@Method 2 //Xpath Method to this //this is a way to get element directly List
list=document.selectNodes("//hibernate-mapping/class/property"); for(Node n:list){ //this is a n important method! print(n.getName()+"----->>>"+n.valueOf("@name")); } */ } public static void print(Object o){ System.out.println(o); }}

里面有我自己做的一些注释,和简单的使用方法。

2、如何生成一个xml文件,也是有两种方式:

import java.io.FileWriter;import java.io.IOException;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class CreateTest {
SAXReader reader=null; Document document=null; public CreateTest() throws DocumentException { // TODO Auto-generated constructor stub reader=new SAXReader(); } public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Document document=DocumentHelper.createDocument(); Element root=document.addElement("tiger"); Element childElement=root.addElement("class") .addAttribute("name","Tiger Guo") .addAttribute("password","*******") .addText("My name is Tiger Guo"); // childElement.addElement("property").addAttribute("name", "username"); /* Write method one FileWriter out=new FileWriter("Tiger.xml"); document.write(out); out.flush(); out.close(); */ //write method Two:new a format to make your xml document looks better OutputFormat format=OutputFormat.createPrettyPrint(); XMLWriter writer=new XMLWriter(new FileWriter("Tiger1.xml"),format); writer.write(document); writer.close(); }}

下面是生成的xml文件:

Tiger.xml:

My name is Tiger Guo

Tiger1.xml:

My name is Tiger Guo

好了,xml文件的解析其实并不是很难,但是对于复杂的xml文件的生成和解析,采用这种方法确实显得有些吃力,代码展示的而仅仅是轻量级的操作时使用即可。

转载地址:http://kijta.baihongyu.com/

你可能感兴趣的文章
源码|并发一枝花之CopyOnWriteArrayList
查看>>
循环神经网络
查看>>
从JDK源码角度看Long
查看>>
你不曾见过的酷炫地图可视化作品(一)
查看>>
二线城市疯狂抢人,技术人才何去何从?
查看>>
如果想成为一名顶尖的前端,这份书单你一定要收藏!
查看>>
iOS Swift UISearchController的取消按钮
查看>>
MyBatis 框架系列之基础初识
查看>>
破解微软智能手环
查看>>
Android Adobe Reader 任意代码执行分析(附POC)
查看>>
megalo -- 网易考拉小程序解决方案
查看>>
iOS 网络编程(二)UDP协议小结
查看>>
Dubbo入门(2) - 简单实践
查看>>
关于Open开头的开源技术库全面汇总,看这一篇就够了
查看>>
React Native学习总结第一天
查看>>
程序猿小白应该注意什么
查看>>
Facebook 对前端工程师的要求是啥?一起来看看
查看>>
一个有趣的小例子,带你入门协程模块-asyncio
查看>>
Android每周一个学习计划——RxJava2 0的学习使用
查看>>
Activity源码分析
查看>>