XML语言简介
文章目录
- XML语言简介
- 用途
- 各部分注解
- 声明
- 元素
- 属性
- 注释
- CDATA
- 转义字符
可拓展标记语言;是SGML的子集,可以描述很复杂的数据关系
用途
用于组织和存储数据,除此之外都和XML本身无关
- 配置文件(例子:Tomcat的web.xml,server.xml…),XML能够非常清晰描述出程序之间的关系
- 程序间数据的传输,XML的格式是通用的,能够减少交换数据时的复杂
- 充当小型数据库,如果我们的数据有时候需要人工配置的,那么XML充当小型的数据库是个不错的选择,程序直接读取XML文件显然要比读取数据库要快
各部分注解
<?xml version="1.0" encoding="UTF-8" ?> //头部申明
<outer> //根节点
<name>S</name>//子标签
<desc>HAHAH</desc>
<inner type="1"> //可以存放属性
<age>10</age>
<sex>男</sex>
</inner>
</outer>
HTML主要用于通过编排来展示数据,而XML主要是存放数据,它更像是一个配置文件!当然,浏览器也是可以直接打开XML文件的
一个XML文件存在以下的格式规范:
- 必须存在一个根节点,将所有的子标签全部包含。
- 可以但不必须包含一个头部声明(主要是可以设定编码格式)
- 所有的标签必须成对出现,可以嵌套但不能交叉嵌套
- 区分大小写。
- 标签中可以存在属性,比如上面的type="1"就是inner标签的一个属性,属性的值由单引号或双引号包括。
声明
<?xml version="1.0" encoding="UTF-8" standalone="no"?> //头部申明
version :版本
encoding:编码;
standalone:独立使用;默认是no。standalone表示该xml是不是独立的,如果是yes,则表示这个XML文档时独立的,不能引用外部的DTD规范文件;
元素
在XML当中元素和标签指的是一个东西
元素中需要值得注意的地方:
- XML元素中的出现的空格和换行都会被当做元素内容进行处理
- 每个XML文档必须有且只有一个根元素
- 元素必须闭合
- 大小写敏感
- 不能交叉嵌套
- 不能以数字开头
属性
命名规范和XML一致
<!--属性名是name,属性值是china-->
<中国 name="china">
</中国>
注释
XML文件也可以使用注释:
<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注释内容 -->
CDATA
通俗的来讲,就是那有些内容的特殊含义改成就单纯字面意思,这种情况,就需要把这些区都放在CDATA区
<test>
<name><![CDATA[我看你<><><>是一点都不懂哦>>>]]></name>
</test>
转义字符
JDK为我们内置了一个叫做org.w3c
的XML解析库,我们来看看如何使用它来进行XML文件内容解析:
public static void main(String[] args) {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); //创建对象
try {
DocumentBuilder db = dbFactory.newDocumentBuilder(); //创建对象
Document doc = db.parse("file:test.xml");
//每一个标签作为一个节点
NodeList list = doc.getElementsByTagName("outer"); //可能有挺多text
Node root = list.item(0); //获取第一个
NodeList childs = root.getChildNodes(); //一个节点下可以有很多结点,节点可以是一个带有内容的标签,也可以是一段文本
for (int i = 0; i < childs.getLength(); i++) {
Node child = childs.item(i);
if(child.getNodeType() == Node.ELEMENT_NODE) { //过滤换行符
// 输出节点名称,也就是标签名称,以及标签内部的文本(内部的内容都是子节点,所以要获取内部的节点)
System.out.println(child.getNodeName() + ";" + child.getFirstChild().getNodeValue());
}
}
}catch(Exception e) {
e.printStackTrace();
}
}