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文件的更多相关文章

  1. 通过generate解析SQL日志生成xml进行SQL回放

    查看Oracle redo日志来分析SQL执行记录 1)设置Oracle数据字典导出路径参数(可选) shutdown immediatealter system set UTL_FILE_DIR=' ...

  2. Java根据Freemarker模板生成Word文件

    1.  准备模板 模板 + 数据 = 模型 1.将准备好的Word模板文件另存为.xml文件(PS:建议使用WPS来创建Word文件,不建议用Office) 2.将.xml文件重命名为.ftl文件 3 ...

  3. JAVA中使用freemark生成自定义文件(json、excel、yaml、txt)

    原文:http://blog.csdn.net/jinzhencs/article/details/51461776 场景:在我们工作中,有时需要生成一些文件,可能它不是一种标准的格式,比如JSON. ...

  4. Linq to XML - C#生成XML

    1.System.Xml.XmlDocument  XML file转成字符串  string path3 = @"C:\Users\test.xml";  XmlDocument ...

  5. java 解析上传的Excel文件

    java poi解析上传的Excel文件 package com.zhl.push.Utils; /** * @Author TAO * @ClassName ExcelData * @Descrip ...

  6. Java KeyStore 用命令生成keystore文件

    1.生成keyStore文件 在命令行下执行以下命令: Shell代码 收藏代码 keytool -genkey -validity 36000 -alias www.zlex.org -keyalg ...

  7. Java KeyStore 用命令生成keystore文件自己生成证书,简介

    1.生成keyStore文件 在命令行下执行以下命令: Shell代码 收藏代码 keytool -genkey -validity 36000 -alias www.zlex.org -keyalg ...

  8. 【文件】使用word的xml模板生成.doc文件

    一.编辑模板 替换地方以变量标记如“案件编号”可写成{caseNo} template.xml 二.准备数据 以HashMap封装数据,原理是替换模板中的变量 三.替换操作 选择输出位置:writeP ...

  9. 【Java】使用iText生成PDF文件

    iText介绍 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转 ...

随机推荐

  1. Spring boot 整合 Mybatis + Thymeleaf开发web(二)

    上一章我把整个后台的搭建和逻辑给写出来了,也贴的相应的代码,这章节就来看看怎么使用Thymeleaf模板引擎吧,Spring Boot默认推荐Thymeleaf模板,之前是用jsp来作为视图层的渲染, ...

  2. 自定义View实现五子棋游戏

    成功的路上一点也不拥挤,因为坚持的人太少了. ---简书上看到的一句话 未来请假三天顺带加上十一回家结婚,不得不说真是太坑了,去年婚假还有10天,今年一下子缩水到了3天,只能赶着十一办事了. 最近还在 ...

  3. Android Multimedia框架总结(二十一)MediaCodec中创建到start过程(到jni部分)

    转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/53386117 我最近正在参加CS ...

  4. Android TV开发总结(六)构建一个TV app的直播节目实例

    请尊重分享成果,转载请注明出处:http://blog.csdn.net/hejjunlin/article/details/52966319 近年来,Android TV的迅速发展,传统的有线电视受 ...

  5. springMVC源码分析--HandlerAdapter(一)

    HandlerAdapter的功能实际就是执行我们的具体的Controller.Servlet或者HttpRequestHandler中的方法. 类结构如下:

  6. UE4使用第三方库读写xml文件

    原文链接:http://gad.qq.com/article/detail/7181031 本文首发腾讯GAD开发者平台,未经允许,不得转载 在游戏开发过程中,读写xml几乎已经成为不可或缺的功能,但 ...

  7. Java进阶(四十六)简述ArrayList、Vector与LinkedList的异同点

    简述ArrayList.Vector与LinkedList的异同点   Collection类的继承图如下:   从图中可以看出,LinkedList与ArrayList.ArrayDeque这三者都 ...

  8. 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题

    对于这个问题,我相信我的方法已经能帮90%的人解决了! 当你用Eclipse运行web项目的时候,你就会看到控制台出现: WARNING: [SetPropertiesRule]{Server/Ser ...

  9. JAVA面向对象-----继承

    类和类之间的常见关系. 既然继承是描述类和类之间的关系,就需要先来了解类和类之间的常见关系 现实生活的整体与部分 举例说明 现实生活 学生 是人 狗 是动物 球队 包含 球员 整体与部分的关系,部分可 ...

  10. iOS开发出错whose view is not in the window hierarchy!的解决

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 一个简单的单窗口App在运行时出现错误: 2016-04-07 ...