JavaWeb基础入门--XML入门

主要内容:

JavaWeb基础入门--XML入门_第1张图片


 XML:
 

JavaWeb基础入门--XML入门_第2张图片

XML与HTML的比较:
 

JavaWeb基础入门--XML入门_第3张图片

例如:
 

JavaWeb基础入门--XML入门_第4张图片


XML的用途:

JavaWeb基础入门--XML入门_第5张图片

JavaWeb基础入门--XML入门_第6张图片

JavaWeb基础入门--XML入门_第7张图片

JavaWeb基础入门--XML入门_第8张图片


XML文档结构:
 

JavaWeb基础入门--XML入门_第9张图片


XML声明:只能放在第一行 

JavaWeb基础入门--XML入门_第10张图片


XML标签:
 

JavaWeb基础入门--XML入门_第11张图片

合法的标签名:
 

JavaWeb基础入门--XML入门_第12张图片

适当的注释与缩进:
JavaWeb基础入门--XML入门_第13张图片

合理使用属性:
 

JavaWeb基础入门--XML入门_第14张图片

处理特殊字符:
 

JavaWeb基础入门--XML入门_第15张图片

实体引用:用替代的方法使用特殊字符

JavaWeb基础入门--XML入门_第16张图片

JavaWeb基础入门--XML入门_第17张图片

CDATA标签:
JavaWeb基础入门--XML入门_第18张图片

JavaWeb基础入门--XML入门_第19张图片

有序的子元素:
 

JavaWeb基础入门--XML入门_第20张图片


案例测试:
将其写入xml文档

JavaWeb基础入门--XML入门_第21张图片

测试代码:
 




	
		大学英语
		36
		考试
	
	
	
		高等数学
		70
		考试
	
	
	
		计算机应用基础
		108
		上机考试
	
	

输出结果:直接将xml文件拖到浏览器中

JavaWeb基础入门--XML入门_第22张图片


XML语意约束:

JavaWeb基础入门--XML入门_第23张图片

DTD约束:hr (employee)   中间必须添加空格

JavaWeb基础入门--XML入门_第24张图片

DTD定义节点:

JavaWeb基础入门--XML入门_第25张图片

DTD定义节点数量:
 

JavaWeb基础入门--XML入门_第26张图片

XML引用DTD文件:
 

JavaWeb基础入门--XML入门_第27张图片

创建DTD文件:
测试代码:

















在XML文件进行导入:SYSTEM代表的是本地文件


编程练习:

JavaWeb基础入门--XML入门_第28张图片

测试代码:




















XML Schema:

JavaWeb基础入门--XML入门_第29张图片

测试代码:

对于下面的添加约束:
 




张三 31 4000 会计部
XX大厦-B103
李四 23 3000 工程部
XX大厦-B104

XML Schema:xsd文件



	
		
		
			
				
					
						
							
							
								
									
										
										
									
								
							
							
							
								
									
										
										
									
								
							
						
											
					
				
			
		
		

案例测试:暂时搁置

 


DOM文档对象模型:

JavaWeb基础入门--XML入门_第30张图片

JavaWeb基础入门--XML入门_第31张图片


DOM4j:

JavaWeb基础入门--XML入门_第32张图片


DOM4j遍历XML:首先将 dom4j-2.2.1.jar包 add path到工程中
测试代码:
 

package com.imooc.dom4j;

import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class HrReader {
	
	//读取XML文件方法
	public void readXml(){
		String file = "/Users/lcs/eclipse-workspace/xml/src/hr.xml";
		
		//SAXReader类是读取XML文件的核心类,用于将XML解析后以“树”的形式保存在内存中
		SAXReader reader = new SAXReader(); 
		try {
			Document document = reader.read(file);
			
			//获取XML文档的根节点,即hr标签
			Element root = document.getRootElement();
			
			//elements方法用于获取指定的标签集合
			List employees = root.elements("employee");
			
			for(Element employee:employees) {
				//element()用于获取唯一的子节点对象
				Element name = employee.element("name");
				//getText()标签用于获取标签文本 
				String empName = name.getText();
				System.out.print(empName);
				
				//获取属性
				Attribute att = employee.attribute("no");
				System.out.println("  工号:"+att.getText()); 
				
				System.out.println(employee.elementText("age"));
				System.out.println(employee.elementText("salary"));
				
				Element department = employee.element("department");
				System.out.println(department.element("dname").getText());
				System.out.println(department.element("address").getText());
				
				
				
				System.out.println("================");
			}
			
			
			
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}
	public static void main(String[] args) {
		HrReader reader = new HrReader();
		reader.readXml();
	}

}

输出结果:
 

张三  工号:3309
30
4000
会计部
XX-大厦-B103
================
莉丝  工号:3310
30
5000
工厂部
XX-大厦-B104
================

DOM4j更新XML:写入一个人员信息到hr.xml中

package com.imooc.dom4j;

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class HrWriter {

	public void writeXml() {
		String file = "/Users/lcs/eclipse-workspace/xml/src/hr.xml";
		// SAXReader类是读取XML文件的核心类,用于将XML解析后以“树”的形式保存在内存中
		SAXReader reader = new SAXReader();

		try {
			Document document = reader.read(file);
			// 获取XML文档的根节点,即hr标签
			Element root = document.getRootElement();

			// addElement()方法用于创造一个传入参数类型的元素
			Element employee = root.addElement("employee");

			// 然后在新建的employee上增加属性
			employee.addAttribute("no", "3311");
			// 增加子节点
			Element name = employee.addElement("name");
			name.setText("王五");

			employee.addElement("age").setText("37");
			employee.addElement("salary").setText("9000");

			Element department = employee.addElement("department");
			department.addElement("dname").setText("人事部");
			department.addElement("address").setText("XX-大厦-A108");

			// 已经在内存中完成了编写,接下来将其导入到XML文件
			Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
			document.write(writer);
			writer.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		HrWriter hrWriter = new HrWriter();
		hrWriter.writeXml();

	}

}

查看hr.xml文件:




张三 30 4000 会计部
XX-大厦-B103
莉丝 30 5000 工厂部
XX-大厦-B104
王五 37 9000 人事部
XX-大厦-A108

案例测试:

JavaWeb基础入门--XML入门_第33张图片

写入代码:
 

package com.imooc.dom4j;

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Plan2Writer {

	public void writeXml() {
		String file = "/Users/lcs/eclipse-workspace/xml/src/plan2.xml";
		// SAXReader类是读取XML文件的核心类,用于将XML解析后以“树”的形式保存在内存中
		SAXReader reader = new SAXReader();

		try {
			Document document = reader.read(file);
			// 获取XML文档的根节点,即course标签
			Element root = document.getRootElement();

			// addElement()方法用于创造一个传入参数类型的元素
			Element employee = root.addElement("course");

			// 增加子节点
			Element name = employee.addElement("course-name");
			name.setText("历史");

			employee.addElement("class-hour").setText("50");
			employee.addElement("exam-form").setText("考试");

			// 已经在内存中完成了编写,接下来将其导入到XML文件
			Writer writer = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
			document.write(writer);
			writer.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		Plan2Writer plan2Writer = new Plan2Writer();
		plan2Writer.writeXml();

	}

}	

打开plan.xml:格式化后结果为
 





	
		大学英语
		36
		考试
	

	
		高等数学
		70
		考试
	

	
		计算机应用基础
		108
		上机考试
	

	
		历史
		50
		考试
	

XPath路径表达式:

JavaWeb基础入门--XML入门_第34张图片


XPath基本表达式:

JavaWeb基础入门--XML入门_第35张图片

测试案例:

JavaWeb基础入门--XML入门_第36张图片

JavaWeb基础入门--XML入门_第37张图片


XPath实验室:
JavaWeb基础入门--XML入门_第38张图片

测试案例:
 

package com.imooc.dom4j;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class XPathTestor {
	
	public void xpath(String xpathExp) {
		 String file = "/Users/lcs/eclipse-workspace/xml/src/hr.xml";
		 SAXReader reader = new SAXReader();
		 
		 try {
			Document document = reader.read(file);
			
			//核心方法
			List nodes = document.selectNodes(xpathExp);
			for(Node node:nodes){
				Element emp = (Element)node;
				System.out.println("姓名:"+emp.elementText("name"));
				System.out.println("工号:"+emp.attributeValue("no"));
				System.out.println("年龄:"+emp.elementText("age"));
				System.out.println("薪水:"+emp.elementText("salary"));
				System.out.println("==========");
			}
			
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		XPathTestor testor = new XPathTestor();
		//输出根节点下的employee
//		testor.xpath("/hr/employee");
		
		//输出所有employee 
//		testor.xpath("//employee");
		
		//输出salary小于4000的employee
//		testor.xpath("//employee[salary<4000]");
		
		//输出名字为李一的employee,用单引号引起来
//		testor.xpath("//employee[name='李一']");
		
		//输出属性no为3304的employee,不用单引号引起来
//		testor.xpath("//employee[@no=3304]");
		
		//输出第一个employee
//		testor.xpath("//employee[1]");
		
		//输出最后employee
//		testor.xpath("//employee[last()]");
		
		//按照指定位置查询
//		testor.xpath("//employee[position()<6]");
		
		//按照指定位置3和8查询,组合符号 |
		testor.xpath("//employee[3] | //employee[8]");
		
		

	}

}

编程练习:

JavaWeb基础入门--XML入门_第39张图片

测试代码:

package com.imooc.dom4j;

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class Plan2Testor {
	
	public void xpath(String xpathExp) {
		 String file = "/Users/lcs/eclipse-workspace/xml/src/plan2.xml";
		 SAXReader reader = new SAXReader();
		 
		 try {
			Document document = reader.read(file);
			
			//核心方法
			List nodes = document.selectNodes(xpathExp);
			for(Node node:nodes){
				Element emp = (Element)node;
				System.out.println("课程:"+emp.elementText("course-name"));
				System.out.println("课时:"+emp.elementText("class-hour"));
				System.out.println("考核方式:"+emp.elementText("exam-form"));
				System.out.println("==========");
			}
			
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		Plan2Testor testor = new Plan2Testor();
		
		//输出所有课程信息
		testor.xpath("//course");
		
		//输出课时小于50的course
		testor.xpath("//course[class-hour<50]");
		
		//输出名字为高等数学的course,用单引号引起来
		testor.xpath("//course[course-name='高等数学']");
		
		
		//输出前两条位置查询
		testor.xpath("//course[position()<3]");
	}

}

输出结果:

课程:大学英语
课时:36
考核方式:考试
==========
课程:高等数学
课时:70
考核方式:考试
==========
课程:计算机应用基础
课时:108
考核方式:上机考试
==========
课程:历史
课时:50
考核方式:考试
==========
课程:大学英语
课时:36
考核方式:考试
==========
课程:高等数学
课时:70
考核方式:考试
==========
课程:大学英语
课时:36
考核方式:考试
==========
课程:高等数学
课时:70
考核方式:考试
==========

总结:

get

JavaWeb基础入门--XML入门_第40张图片

 

你可能感兴趣的:(从网页搭建入门java,web)