XML标记语言
- 概念
- 特点和作用
- 基础语法
- Dom4j解析
正则
一、XML标记语言
1、概念
xml用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
2、特点和作用
- 特点
- xml与操作系统和编程语言开发平台无关
- 可以实现不同系统之间的数据交互
- 作用
- 配置应用程序(
Servlet
配置、框架环境配置等)和网站 - 数据交互
- Ajax基石
- 配置应用程序(
3、基础语法
3.1、定义条件
- 必须有声明语句
- 必须有,且只能有一个根元素
- 标签大小写敏感
- 属性值用双引号
- 标签成对
- 元素的嵌套
<?xml version="1.0" encoding="UTF-8"?>
<scores pg="cn.yanghuisen.test1">
<Student>
<id type="java.lang.Integer">1</id>
<name type="java.lang.String">王同</name>
<course type="java.lang.String">java</course>
<score type="java.lang.Integer">89</score>
</Student>
<Student>
<id type="java.lang.Integer">2</id>
<name type="java.lang.String">李佳</name>
<course type="java.lang.String">sql</course>
<score type="java.lang.Integer">58</score>
</Student>
</scores>
Tips:XML声明一般放置在第一行
3.2、实体引用
xml中,一些字符拥有特殊的意义,不能随意使用。但是有时候又需要这些符号,所以出现了XML实体引用。系统默认提供了5个预定义实体:
实体 | 符号 |
---|---|
< | < |
> | > |
& | & |
" | " |
' | ' |
4、Dom4j解析
DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连Sun 的 JAXM 也在用 DOM4J。
官方网址:https://dom4j.github.io/
4.1、获取Document对象
Document document = new SAXReader().read(new File("src/scores.xml"));
4.2、获取根节点
Element root = document.getRootElement(); // 获取根节点
4.3、获取子节点
4.3.1、获取指定子节点
Element z = root.element("Student");
4.3.2、获取子节点容器
for(Element e:root.elements()) {
for(Element es:e.elements()) {
System.out.println(es);
}
}
4.4、常用方法
public class Test3 {
public static void main(String[] args) throws Exception {
Document document = new SAXReader().read(new File("src/scores.xml"));
Element root = document.getRootElement(); // 获取根节点
for(Element e:root.elements()) {
for(Element es:e.elements()) {
System.out.println(es.getText()); // 获取节点文本
}
Element newElement = e.addElement("text"); // 添加新的子节点
newElement.setText("啊哈哈"); // 设置节点文本
}
}
}
1
王同
java
89
2
李佳
sql
58
4.5、添加新节点到文件
public class Test2 {
public static void main(String[] args) throws Exception {
Document document = new SAXReader().read(new File("src/scores.xml"));
Element root = document.getRootElement();
Element newElement = root.addElement("text");
newElement.setText("啊哈哈");
XMLWriter w = new XMLWriter(new FileOutputStream("src/scores.xml"),OutputFormat.createPrettyPrint());
w.write(document);
w.close();
System.out.println();
}
}
删除:
root.remove(newElement);
二、正则
public class Test1 {
public static void main(String[] args) {
String str = "(\\d+)";
Pattern p = Pattern.compile(str); // 将给定的正则表达式编译为模式。
Matcher m = p.matcher("daafafsa15afadfasd4121asfdfgasdfas");
while(m.find()) {
// 尝试找到匹配模式的输入序列的下一个子序列。
// 返回与上一个匹配匹配的输入子序列。
System.out.println(m.group()+"----->"+m.group(1)); // 返回在上一次匹配操作期间由给定组捕获的输入子序列
}
// 尝试将整个区域与模式进行匹配。
System.out.println(m.matches());
}
}
15----->15
4121----->4121
false