学习笔记四(XML、正则表达式)

正则表达式简述:

正则表达式都写在一对//里;
^ 表示开头 $ 表示结尾 []里面是内容 {}里面是个数
如:
用户名: / ^ [a-z0-9_-]{3,16}$/
密码: / ^ [a-z0-9_-]{6,18} $ /
邮箱:/ ^([a-z0-9_\ .-]+)@([\da-z \ .-]+)\ .([a-z.]{2,6})$/

一些特殊含义的字符:
. 有特殊含义,使用时需要进行转义。
+等价于{1,}。
\d等价于[0-9]。

详细内容可以查阅手册或上网搜索:

书城项目第一阶段:

第一阶段:登录、注册的验证
1.使用jQuery技术对登录中的用户名、密码进行非空验证
2.使用jQuery技术和正则表达式对注册中的用户名、密码、确认密码、邮箱进行格式验证,对验证码进行非空验证

首先将事件绑定在注册和登录按钮上,然后定义函数:
通过正则表达式表示出相应的元素之中的数据形式,然后通过正则表达式调用test()方法,判断是否等于false,等于就不符合规定;最后注意取消默认行为。

<script type="text/javascript">
	$(function(){
		$("#sub_btn").click(function(){
			//用户名校验,规则:用户名只能是6-12为的字母、数字、_
			//取用户名值
			var uname = $("#username").val();
			var regUName = /^\w{6,12}$/;
// 			var regUName = /^[a-zA-Z0-9_-\.]{6,12}$/;
			if(regUName.test(uname) == false){
				alert("用户名不合法,");
				return false;
			}
			//验证邮箱 sdfd@163.
			var email = $("#email").val();
			var regEmail = /^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/;
			if(!regEmail.test(email)){
				alert("邮箱格式不正确!");
				return false;
			}
			
		});
		
	});
</script>

XML

主要从以下四个方面总结:

XML简介
XML用途
XML基本语法
XML解析

XML简介

XML:eXtensible Markup Language(可扩展标记语言)
主要作用是进行数据的传输和存储

XML的使命:就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务

XML与HTML区别
1、XML没有预定义标签,均为自定义标签,HTML相反
2、XML用来传输和存储数据,HTML用来显示数据

XML的用途:

1、配置文件
JavaWeb中的web.xml
C3P0中的c3p0-config.xml
2、数据交换格式
Ajax
WebService
3、数据存储
保存关系型数据

作用图解:(定义了一种统一的数据格式,为不同平台下的应用程序服务)
在这里插入图片描述

XML基本语法

以下面的程序说明:

<?xml version="1.0" encoding="UTF-8"?>	<——XML声明
声明可以不写,但是要写的话只能写在第一行

<students>	<——根元素

	<student id="1">
		<name>张三</name>
		<age>18</age>
	</student>					}<——文档内容
	<student id="2">
		<name>李四</name>
		<age>20</age>
	</student>

</students>

语法规则
1、XML声明要么不写,要写就写在第一行,并且前面没有任何其他字符
2、只能有一个根标签
3、标签必须正确结束
4、标签不能交叉嵌套
5、严格区分大小写
6、属性必须有值,且必须加引号
7、标签不能以数字开头
8、注释不能嵌套
与HTML相似,只有1、5、7和HTML有所不同;

XML解析

XML解析是指通过解析器读取XML文档,解释语法,并将文档转化成对象;对XML的一切操作都是由解析开始的,所以解析非常重要。

Java 平台同时提供了 DOM(Document Object Model)SAX(Simple API for XML) 两种解析方法。。
在这里插入图片描述

        DOM和SAX的对比
主要的区别在于DOM是一次性加载整个XML文档,形成树形结构,支持增删改查;而SAX是通过时事件的回调机制,一遍读入文件,一遍调用函数返回读取的内容,SAX仅支持查询;
在这里插入图片描述

dom4j

是一个开源XML第三方Jar包 (使用dom4j开发,需导入dom4j相应的jar包dom4j-1.6.1.jar)

Dom4j解析关键步骤(暂时只要会解析就行)

解析
//1.创建解析器对象
SAXReader saxReader = new SAXReader();
//2.解析xml文件获取document对象
Document document = saxReader.read("students.xml");
//3.得到根元素
Element root = document.getRootElement();

修改
//添加一个新的student节点
Element newEle = rootElement.addElement("student");
//创建一个良好的xml格式
OutputFormat format = OutputFormat.createPrettyPrint();
//写入文件
XMLWriter xmlWriter = new XMLWriter(new FileWriter("students.xml"),format);
xmlWriter.write(document);
xmlWriter.close();

新建
//1.创建文档
Document document = DocumentHelper.createDocument();
//2.添加根元素
Element root = document.addElement("teachers");
//3.添加元素节点
Element tcEle = root.addElement("teacher");
Element tcEle2 = root.addElement("teacher");

解析的完整步骤:

public class MyDemo {
	public static void main(String[] args) {
		//1、创建解析器
		SAXReader reader = new SAXReader();
		
		try {
			//2、xml解析成document文件
			Document document = reader.read("students.xml");
			//3、获得根元素
			Element rootElement = document.getRootElement();
			//4、获得子元素
			List<Element> elements = rootElement.elements();
			//5、获得属性值
			for(Element element : elements) {
				String id = element.attributeValue("id");
				String name = element.elementText("name");
				String age = element.elementText("age");
				System.out.println(id+" "+name+" "+age);
				
			}	
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
Xpath查询

XPath 是在 XML 文档中查找信息的语言

XPath通过元素和属性进行查找,简化了Dom4j查找节点的过程,是W3C组织发布的标准。(使用XPath必须导入jaxen-1.1-beta-6.jar包)
具体语法见 XPathTutorial
两个重要方法:

查找单个元素节点
document.selectSingleNode("/students/student[@id='1']")
查找多个元素节点
document.selectNodes("/students/student")

例如:

public class MyXpathDemo {
	public static void main(String[] args) {
		SAXReader reader = new SAXReader();
		try {
			Document document = reader.read("students.xml");
			Element element =(Element) document.selectSingleNode("/students/student[@id=2]");
			String id = element.attributeValue("id");
			String name = element.elementText("name");
			String age = element.elementText("age");
			System.out.println(id+name+age);
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
发布了28 篇原创文章 · 获赞 23 · 访问量 6606

猜你喜欢

转载自blog.csdn.net/ssnszds/article/details/105622473