xml本质上是一种数据的格式,可以用来存储复杂的数据结构和数据关系。
使用XML(可扩展标记语言)有以下几个好处:
可读性强:XML使用标记来定义数据,使得数据具有更好的可读性和可维护性。它采用了层次结构的形式,可以清晰地描述数据的结构,易于理解和解释。
跨平台和语言无关性:XML是一种通用的标记语言,不依赖于具体的编程语言或操作系统。这意味着XML文件可以在不同平台和系统上使用,并且可以被各种编程语言解析和处理。
可扩展性:XML具有良好的扩展性,可以根据需要自定义标记和结构。这使得XML非常适合用于描述复杂的数据或配置文件。
数据与显示的分离:使用XML可以将数据与其呈现方式(如HTML、XSL等)进行分离。这样,数据可以独立于其呈现方式进行管理和更新,使得应用程序更加可灵活和可扩展。
数据交换和集成:XML广泛用于数据交换和集成领域。由于XML的普遍性和通用性,可以轻松地在不同系统和应用程序之间传输和共享数据,促进系统间的互操作性。
应用场景:用来作为系统的配置文件,也可以作为在网络中传输的数据格式。
xml的特点:
xml中的一些语法规则:
xml文件后缀必须是xml
。
文档声明必须是第一行:
version
:xml的默认版本号码。
encoding
:本xml文件的编码。
在 XML 中,有五个特殊字符需要进行转义(即使用实体引用)才能正确表示:
符号 | 替代 |
---|---|
小于号 < | 用 < 表示 |
大于号 > | 用 > 表示 |
引号 " | 用 " 表示 |
单引号 ’ | 用 ' 表示 |
和号 & | 用 & 表示 |
也可以使用CDATA的数据区:,使用了它就可以在其中随便写。
创建mevan项目引入dom4j依赖:
<dependency>
<groupId>dom4jgroupId>
<artifactId>dom4jartifactId>
<version>1.6.1version>
dependency>
dom4j如何解析xml文档:
首先dom4j提供了一个 SAXReader解析器
把整个xml文件解析为一个Document文档
,然后在解析为Element:元素(标签)
,最后解析标签的 Attribute:属性
和 子标签,文本
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/main/resources/user.xml");
Element rootElement = document.getRootElement();
4.使用Element对象提供的方法进行解析数据。
示范:
这是我的xml文件内容:
<users>
<user id="1">
<name>张三name>
<age>12age>
<sex>男sex>
<username>zhangsanusername>
<password>123456password>
user>
<user id="2">
<name>里斯name>
<age>13age>
<sex>女sex>
<username>lisiusername>
<password>1234567890password>
user>
users>
我解析的代码:
package com.pjh;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.util.List;
public class test {
public static void main(String[] args) throws Exception {
//创建一个SAXReader解析对象。
SAXReader saxReader = new SAXReader();
//使用后SAXReader对象将要读取的xml解析为一个Document文档。
Document document = saxReader.read("src/main/resources/user.xml");
//从文档对象中解析xml的数据
Element rootElement = document.getRootElement();
System.out.println(rootElement.getName());
List<Element> elements = rootElement.elements();
for (Element e: elements){
System.out.println(e.getName());
System.out.println("id:"+e.attribute("id").getValue());
List<Element> elements1 = e.elements();
for (Element e1 : elements1){
System.out.println(" "+e1.getName() +":"+e1.getTextTrim());
}
}
}
}
打印结果:
使用字符串拼接直接把数据拼成xml的格式再通过io流写入到xml文档中。
如下代码:
package com.pjh;
import java.io.FileWriter;
public class test2 {
public static void main(String[] args) {
StringBuilder str = new StringBuilder();
str.append("\n");
str.append("\n" );
str.append(" \n" );
str.append(" 12 \n");
str.append(" 张三 \n");
str.append(" \n");
str.append("");
try (FileWriter fileWriter =
new FileWriter("src/main/resources/user2.xml")) {
fileWriter.write(str.toString());
}catch (Exception e){
e.printStackTrace();
}
}
}
结果: