xml基础

XML是eXtensible Markup Language(可扩展标记语言)的缩写,一个基本的xml文档通常由序言和文档元素两部分组成。
在xml文档的第一行通常是xml声明,用于说明这是一个xml文档,xml文档的声明不是必须的,但通常建议为xml添加xml声明。<?xml version="" encoding="" standalone=""?>其中version用于指定遵循xml规范的版本号。在xml声明中必须包含version属性,该属性必须放在xml声明的其他属性之前,encoding用于指定xml文档中字符使用的编码集,standalone用于指定该xml文档是否和一个外部文档嵌套使用。取值为yes或no,yes时表示是一个独立的xml文档,与外部文件无关联。
xml文档中的元素是以树形分层结构排列的,一个元素可以嵌套在另一个元素中。xml中有且只有顶层元素,称为文档元素或者根元素,类似html中的body元素,其他所有元素都嵌套在根元素中。<name>content</name>
其中<name>为xml文档的起始标记。name是元素的名称。它的命名有一定的规则:
元素的名称可以包含字母、数字和其他字符,但最好不要使用“-”和“.”,以免混淆。
元素名称只能以字母、下划线或者冒号开头。
元素名称不能以XML(或者xml、Xml、xMl、。。等)开头。
元素名称不能有空格且不能为空。
content为元素内容,可以包含其他的元素、字符数据、字符引用、实体引用、处理命令、注释和CDATA(不由xml解析器进行解析的文本数据)。
</name>为xml文档元素的结束标记,该名称必须与起始标记中指定的元素名称相同,包括大小写,并且不能省略。html中可以省略。
在xml文档中,有些字符会被解析器当做标记进行处理,如果希望把这些字符当做普通字符处理,就需要使用实体引用或者CDATA段。
实体引用:为了避免系统将字符串中的特殊字符当做xml保留字符,xml提供了一些实体引用:
<小于:&lt;   >大于:&gt:   &和:&amp;   单引号:&apos;   双引号:&quot;
CDATA段:CDATA段是一种用来包含文本的方法,其内部的所有内容会被xml解析器当做普通文本,所以任何符号都不会被认为是标记符。它的语法格式:<![CDATA[文本内容]]>
dom4j主要用于操作xml文档,目前很多软件都在使用dom4j来读写xml。
创建xml文档:
1:Document document=DocumentHelper.createDocument();
2:DocumentFactory factory=DocumentFactory.getInstance();
Document document=factory.createDocument();
创建根节点:
Element root=DocumentHelper.creatElement("root");
document.setRootElement("root");
添加注释:
root.addComment(String text);
添加属性:
root.addAttribute("version","2.0");
创建子节点:
Element child=root.addElement("child");
设置节点的内容:
1.child.setText(String text);
2.child.addCDATA(String text);
设置输出格式:
应用dom4j生成的xml文件默认采用紧凑方式排版,这种排版格式比较混乱,不易于阅读,因此,dom4j提供了将输出格式设置为缩进方式的方法,这样可以方便阅读。
OutputFormat format=OutputFormat.createPrettyPrint();   //设置格式为缩进格式
format.setEncoding("GBK");   //设置写入流编码为gbk
输出xml文档:
String path=request.getRealPath("/xml/xsl.xml");
XMLWriter writer=new XMLWriter(new FileWriter(path),format);
writer.write(document);
writer.close();
解析xml文档:
String path=request.getRealPath("/xml/xsl.xml");
SaxReader reader=new SaxReader();
Document document=reader.read(new File(path));
获取根节点:
Element root=root.getRootElement();
获取子节点:
Element child=root.Element("child");   //获取指定名称的第一个节点
List children=root.Elemnts("child");   //获取指定名称的所有节点的集合
获取指定条件的节点:
Element child=root.selectSingleNode("root/child[@id=1]");  //获取id=1的名称为child的节点。
List children=root.selectNodes("root/child");   //获取名称为child的所有的节点。
删除节点:
root.removeElement("child");  //删除名称为child的节点。
root.elements("child").clear();  //删除所有名称为child的节点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值