`

如何生成一个XML文档

阅读更多

在这里,简单的介绍一下XML,以及如何来生成一个XML文档和怎样解析一个XML文档。

 

1.什么是XML

    • xml指可扩展标记语言(EXtensible Markup Language)
    • xml是以一种标记语言,很类似HTML
    • xml的设计宗旨是传输数据,而不是显示数据
    • xml标签没有被预定义,需要自行定义标签
    • xml被设计为具有自我描述性
    • xml是W3C的推荐标准

2.XML与HTML的差异

  • xml不是html的替代
  • xml和html为不同的目的而设计
  • xml被设计为传输和存储数据,其焦点是数据的内容
  • html被设计用来显示数据,其焦点是数据的外观
  • html旨在显示信息,而xml旨在传输信息

XML可以跨语言传输数据

 

3.一个规范的XML文档

 

<?xml version="1.0" encoding="UTF-8" ?> 
<班级>
    <学生 id="001">
        <姓名>张三</姓名>
        <成绩>
            <Math>90</Math>
            <English>80</English>
        </成绩>
    </学生>   
    <!-- 下面是第二个学生的描述 -->
    <学生 id="002">
        <姓名>Tom</姓名>
        <成绩>
            <Math>95</Math>
            <English>78</English>
        </成绩>
    </学生>
</班级>

①.XML文档的格式

  • 第一行是xml文档的头文件,每个xml文档都有这样一个头文件
  • encoding值是xml的编码格式
  • <班级> 为根元素,其他所有元素都必须包含在根元素内部
  • <学生>为班级的子元素,‘学号’为学生的属性
  • :是xml文档中的注释,与html相同
  • 标签必须成对出现

②.XML文档的语法规则

一个好的语言都是有语法规则的,这样,他才能很好的普及。XML语法具有以下的几条规则:

  • 所有xml元素都必须有关闭标签
  • xml标签对大小写敏感
  • xml必须正确地嵌套
  • xml必须有根元素
  • xml的属性值必须加引号
  • 元素名称不能以数字和"_"(下划线)开头、不能以xml开头、不能包含空格与冒号
  • html中的转义字符在xml中也可以使用,如果文本中需要转义的字符太多,还可以使用"<![CDATA[需要转义的文本]]>"

4.生成XML文档

 

XML作为数据的传输语言,它能够很好的显示数据信息,那么怎样把一张表或者一个实例对象转换为xml呢?

以User对象为例,使用JAXB生成User对象的xml:

 

首先,你得有一个User对象:

package com.cn.entity;
import java.util.List;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement    //注解,要想生成xml必须得加哦~ ~  切记 不要导错了包!!~~
public class User {
	private String name;
	private int id;
	private String password;
	private String email;
	private List<Message> messageList; 
        //set和get方法
        ... ...
}

-------------------------------------------------

package com.cn.entity;
public class Message {
	private int id;
	private String content;    //message的内容
        //set和get方法
        ... ...

}

 

然后,调用JAXB的一些方法生成xml,在此之前,别忘了导入JAXB的一些jar包:

import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import com.cn.entity.Message;
import com.cn.entity.User;

public class Test {
	public static void main(String[] args) throws Exception {
	
		User user = new User();
		user.setName("tom");
		user.setPassword("123");
		
		Message m1 = new Message();
		m1.setId(1);
		m1.setContent("tom生成了xml");
		
		Message m2 = new Message();
		m2.setId(2);
		m2.setContent("jack解析了xml");
		
		List<Message> list = new ArrayList<Message>();
		list.add(m1);
		list.add(m2);
		
		user.setMessageList(list);
		
		JAXBContext ctx = JAXBContext.newInstance(User.class);
		Marshaller marshaller = ctx.createMarshaller();
		marshaller.setProperty(Marshaller.JAXB_ENCODING,"GBK");	//设置xml的编码
		marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);	//让生成的xml按规范的格式显示
		marshaller.marshal(user, System.out);	//让xml输出在控制台
}

 让我们来看看结果吧:

<?xml version="1.0" encoding="GBK" standalone="yes"?>
<user>
    <id>0</id>
    <messageList>
        <content>tom生成了xml</content>
        <id>1</id>
    </messageList>
    <messageList>
        <content>jack解析了xml</content>
        <id>2</id>
    </messageList>
    <name>tom</name>
    <password>123</password>
</user>

 

是不是总感觉哪里不对劲,如果把id作为属性会不会感觉好点~~~

 

其实,这个也很简单,就是写几行注解的事:

    • 把id作为其父节点的属性值,在属性的set方法上添加注解: @XmlAttribute
    • 给两个messageList添加一个父节点,在messageList的set方法上添加:@XmlElementWrapper(name="Messages") name 的值是给该父节点起了名称叫“Messages”
    • 忽略属性,就是在属性的set方法上添加:@XmlTransient ,在生成的xml文档中就不会显示该属性
    • 修改标签的名称,在其对应的属性的set方法上添加:@XmlElement(name="修改的标签名称"),name的值就是标签修改后的名称
@XmlAttribute        //将id其父标签的属性
	public void setId(int id) {
		this.id = id;
	}
    ... ...
    @XmlElement(name="msg")        //将默认的“content”标签改为“msg”
	public void setContent(String content) {
		this.content = content;
	}
    ... ...
    @XmlElementWrapper(name="Messages")        //给messageList添加父标签,并且命名为“Messages”
	public void setMessageList(List<Message> messageList) {
		this.messageList = messageList;
	}

 

分享到:
评论
1 楼 lylan 2014-10-16  

相关推荐

    自动生成XML文件列表工具

    这个“自动生成XML文件列表工具”就是针对特定需求设计的,它能够快速地将指定目录下的所有文件信息整理并生成一个XML文件。这样的工具在软件更新、版本控制、数据备份等场景中十分有用,因为它提供了标准格式化的...

    c#根据datatable为每行记录自动生成一个xml文件

    c#根据datatable为每行记录自动生成一个xml文件

    生成XML文件ABAP程序

    在构建完DOM对象模型之后,为了将XML文档写入文件或发送到客户端,需要创建一个流工厂和输出流。示例代码中通过`l_streamfactory = l_ixml-&gt;create_stream_factory()`创建了一个流工厂,并通过`l_ostream = l_...

    动态生成Rss文件 Xml操作 Xml文件的修改

    动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件...

    excel读取生成xml文件

    这将根据映射信息生成一个XML文件,其中包含工作表中的数据。 5. **处理XML文件**:生成的XML文件可以用任何XML编辑器或编程语言(如Python、Java、C#等)进一步处理。例如,可以使用XPath查询语言来提取特定数据,...

    JAVA 解析XML生成XML文档实例

    JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    根据XML模版自动生成

    总的来说,根据XML模版自动生成XML文件是一个涉及数据处理、XML技术及文件操作的综合任务。理解这些步骤和相关工具,对于在IT领域中处理数据交换和文件生成至关重要。通过熟练掌握这些技能,开发者能够更有效地实现...

    mpxj解析ms project+生成xml文件

    在"ParseProjectMpp"这个示例中,很可能包含了一个完整的Java程序,演示了如何使用MPXJ库解析MS Project文件并生成XML文件。你可以通过查看和运行这个程序,学习如何实际操作这些步骤。 总的来说,MPXJ库为Java...

    格式化xml字符串,并生成xml文件

    在实际应用中,我们可能先使用`XMLFileUtil.readFileToString()`方法读取XML文件为字符串,然后通过`XMLFormatUtil.formatXML()`对这个字符串进行格式化,最后再写回为一个新的XML文件。 总结起来,本文主要讨论了...

    excel文档解析和生成xml文件

    以下是一个简单的例子,展示如何创建一个XML文档并添加Excel数据: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; ...

    本地生成新的XML文件

    XML文件由一系列元素组成,每个元素都有一个开始标签(如`&lt;tag&gt;`)和一个结束标签(如`&lt;/tag&gt;`)。元素可以包含文本内容、属性,也可以嵌套其他元素。例如,一个简单的XML文件可能如下所示: ```xml &lt;name&gt;Item...

    java读取多个excel内容生成一个xml文件

    java一次性读取多个excel文件的内容,每个excel包含多个sheet,生成一个自定义的xml文件

    mybatis xml文件自动生成

    "mybatis xml文件自动生成"是开发过程中的一个重要环节,它可以帮助开发者提高效率,减少手动编写XML映射文件和对应的POJO(Plain Old Java Object)类的工作量。 MyBatis的Mapper文件是其核心组成部分之一,它包含...

    Xml文件自动生成C# Class类

    3. **自动生成代码**:在提供的压缩包`Xml2Class`中,很可能包含了一个这样的工具,能够接受XML文件作为输入,然后生成对应的C#类代码。这样的工具通常会根据XML节点的层次结构生成嵌套的类,并考虑命名空间、属性...

    mysql数据库自动生成xml文件

    MySQL数据库自动生成XML文件是一项实用的技术,它可以帮助开发者快速地将数据库中的数据转换为XML格式,便于数据交换、存储或进一步处理。这项技术通常结合代码生成工具,如MyBatis的Generator,能够自动化生成DAO...

    java文件生成xml文档

    在Java编程中,生成XML文档是一项常见的任务,特别是在构建配置文件、数据交换或者保存结构化信息时。XML(eXtensible Markup Language)是一种标记语言,它的结构清晰、可读性强,非常适合用来存储和传输数据。...

    XML生成器快速生成指定xml

    "XML生成器"是一个工具,它能够帮助用户快速地生成自定义的XML文件,这个过程通常包括了对文件夹中的文件进行遍历,并根据用户的需求将文件信息结构化为XML格式。 首先,我们来了解XML的基本结构。XML文件由一系列...

    根据xml schema生成xml

    在生成XML文档时,遵循XML Schema有以下步骤: 1. **创建XML Schema**:编写XSD文件,定义所需的元素、属性及其关系。例如: ```xml &lt;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"&gt; ``...

    c# 循环生成XML方法

    在C#中,生成XML文档的第一步是创建一个`XmlDocument`对象。这个对象充当了整个XML文档的容器,所有的节点(包括元素、属性、注释等)都将被添加到这个容器中。例如,在给定的代码片段中,首先实例化了一个`Xml...

    java生成xsd,xml示例

    在Java中生成XML文档,我们可以使用DOM(Document Object Model)、SAX(Simple API for XML)或者JAXB(Java Architecture for XML Binding)。DOM解析器会将整个XML文档加载到内存中,适合小规模数据处理;SAX是...

Global site tag (gtag.js) - Google Analytics