Java解析XML与生成XML文件
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,保存在我们的项目目录下,
<hibernate-mapping>
<class name="com.tiger.target" table ="Table_tiger">
<property name="name"></property>
<property name="password" ></property>
</class>
</hibernate-mapping>
解析代码:
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<Node> 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:
<?xml version="1.0" encoding="UTF-8"?>
<tiger>
<class name="Tiger Guo" password="*******">
My name is Tiger Guo
<property name="username" />
</class>
</tiger>
Tiger1.xml:
<?xml version="1.0" encoding="UTF-8"?>
<tiger>
<class name="Tiger Guo" password="*******">My name is Tiger Guo
<property name="username"/>
</class>
</tiger>
好了,xml文件的解析其实并不是很难,但是对于复杂的xml文件的生成和解析,采用这种方法确实显得有些吃力,代码展示的而仅仅是轻量级的操作时使用即可。
Java解析XML与生成XML文件的更多相关文章
- 通过generate解析SQL日志生成xml进行SQL回放
查看Oracle redo日志来分析SQL执行记录 1)设置Oracle数据字典导出路径参数(可选) shutdown immediatealter system set UTL_FILE_DIR=' ...
- Java根据Freemarker模板生成Word文件
1. 准备模板 模板 + 数据 = 模型 1.将准备好的Word模板文件另存为.xml文件(PS:建议使用WPS来创建Word文件,不建议用Office) 2.将.xml文件重命名为.ftl文件 3 ...
- JAVA中使用freemark生成自定义文件(json、excel、yaml、txt)
原文:http://blog.csdn.net/jinzhencs/article/details/51461776 场景:在我们工作中,有时需要生成一些文件,可能它不是一种标准的格式,比如JSON. ...
- Linq to XML - C#生成XML
1.System.Xml.XmlDocument XML file转成字符串 string path3 = @"C:\Users\test.xml"; XmlDocument ...
- java 解析上传的Excel文件
java poi解析上传的Excel文件 package com.zhl.push.Utils; /** * @Author TAO * @ClassName ExcelData * @Descrip ...
- Java KeyStore 用命令生成keystore文件
1.生成keyStore文件 在命令行下执行以下命令: Shell代码 收藏代码 keytool -genkey -validity 36000 -alias www.zlex.org -keyalg ...
- Java KeyStore 用命令生成keystore文件自己生成证书,简介
1.生成keyStore文件 在命令行下执行以下命令: Shell代码 收藏代码 keytool -genkey -validity 36000 -alias www.zlex.org -keyalg ...
- 【文件】使用word的xml模板生成.doc文件
一.编辑模板 替换地方以变量标记如“案件编号”可写成{caseNo} template.xml 二.准备数据 以HashMap封装数据,原理是替换模板中的变量 三.替换操作 选择输出位置:writeP ...
- 【Java】使用iText生成PDF文件
iText介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...
随机推荐
- python学习之路前端-Dom
Dom简介 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为 ...
- MySql配置文件模板
写在开篇: 这个mysql得配置文件my.cnf,是我现在环境里常用得,包含基础配置及一些优化,本来一直在我得有道笔记里记录着,之前一直没有写博客的习惯,最近刚开始注册博客,就将这些东西 ...
- Hadoop — MapReduce原理解析
1. 概述 Mapreduce是一个分布式运算程序的编程框架,是用户开发"基于hadoop的数据分析应用"的核心框架: Mapreduce核心功能是将用户编写的业务逻辑代码和自带默 ...
- Codeforces Round #396(Div. 2) A. Mahmoud and Longest Uncommon Subsequence
[题意概述] 找两个字符串的最长不公共子串. [题目分析] 两个字符串的最长不公共子串就应该是其中一个字符串本身,那么判断两个字符串是否相等,如果相等,那么肯定没有公共子串,输出"-1&qu ...
- Cassandra 3.x官方文档(1)---关于Cassandra
写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...
- Android图表库MPAndroidChart(九)——神神秘秘的散点图
Android图表库MPAndroidChart(九)--神神秘秘的散点图 今天所的散点图可能用的人不多,但是也算是图表界的一股清流,我们来看下实际的效果 添加的数据有点少,但是足以表示散点图了,我们 ...
- 理解性能的奥秘——应用程序中慢,SSMS中快(4)——收集解决参数嗅探问题的信息
本文属于<理解性能的奥秘--应用程序中慢,SSMS中快>系列 接上文:理解性能的奥秘--应用程序中慢,SSMS中快(3)--不总是参数嗅探的错 前面已经提到过关于存储过程在SSMS中运行很 ...
- [extjs5学习笔记]第三十七节 Extjs6预览版都有神马新东西
本文在微信公众号文章地址:微信公众号文章地址 本文地址:http://blog.csdn.net/sushengmiyan/article/details/45190485 [TOC] 在Ext JS ...
- CoreAnimation动画结构变量
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...
- XML之DOM解析模型
<?xml version= "1.0" encoding = "UTF-8"> <articles> <article cate ...