Java-Day019

  • 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个预定义实体:

实体 符号
&lt; <
&gt; >
&amp; &
&quot; "
&apos; '

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

猜你喜欢

转载自blog.csdn.net/Asdzxc968/article/details/104769886