在这里,简单的介绍一下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; }
相关推荐
用JAXB生成一个XML文档,一个XML 模式(Schema)用XML语法表达了一个XML文档的结构。J2EE的开发者也许会需要一个符合XML模式的XML文档。Java XML绑定架构(JAXB)提供了一个绑定编译器,xjc,来从一个XML模式中生成Java类...
c#根据datatable为每行记录自动生成一个xml文件
自动生成XML文件列表工具,可以快速将目录下的文件生成一个xml文件,方便做在线更新等操作的文件生成。
动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件 Xml操作 Xml文件的修改动态生成Rss文件...
java一次性读取多个excel文件的内容,每个excel包含多个sheet,生成一个自定义的xml文件
JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML
输入数据生成一个XML文件 然后对XML文件进行解析显示
读取Excel文件,将文件内容转为xml格式,并生成文件
生成XML文件ABAP程序 REPORT zams_xml_dom_create . TYPE-POOLS: ixml. CLASS cl_ixml DEFINITION LOAD. TYPES: BEGIN OF xml_line, data(256) TYPE x, END OF xml_line. DATA: l_ixml TYPE REF TO if_ixml, ...
通过java文件生成对应的xml文档 模拟个spirng简单框架例子!
根据固定的XML模版,将数据库数据写入XML模板中,并生成新的XML文件(生成的格式是表头信息一条,表体信息若干条)
一个非常好用的 XML 文件生成类。提供快捷的产生 XML 文件的众多方法。(C# )
给初学者一个简单的利用freemarker生成xml文件的例子
excel读取生成xml文件
使用dom4j创建一个xml文件刘宝宝版:笔记以及项目
php生成xml文件
根据xml文件生成C# 属性class类,附件含源码。分享给需要的朋友
例如xml文件的形式是<student><age>1</age><age2>2</age2></student>,在Java文件中设置demo路径,要替换的值,最后分别生成xml文件,例如要换成aa,则xml两个,一个为<student><age>aa</age><age>2</age></student>,...
java生成xsd,xml示例
使用java把数据库数据导出生成xml文件 使用java把数据库数据导出生成xml文件