只做网站不做app,wordpress做视频网站吗,免费企业网站源码生成,个人网站设计内容和要求介绍
官网#xff1a;XML 教程
为什么需要#xff1a;
需求 1 : 两个程序间进行数据通信#xff1f;需求 2 : 给一台服务器#xff0c;做一个配置文件#xff0c;当服务器程序启动时#xff0c;去读取它应当监听的端口号、还有连接数据库的用户名和密码。spring 中的…介绍
官网XML 教程
为什么需要
需求 1 : 两个程序间进行数据通信需求 2 : 给一台服务器做一个配置文件当服务器程序启动时去读取它应当监听的端口号、还有连接数据库的用户名和密码。spring 中的 ico 配置文件,beans.xml 、mybatis XXXMapper.xml 、 tomcat server.xml web.xml 、maven pom.xml能存储复杂的数据关系
解决问题
1解决程序间数据传输的问题 json 比如 qq 之间的数据传送用 xml 格式来传送数据具有良好的可读性可维护性。2xml 可以做配置文件 xml 文件做配置文件可以说非常的普遍 比如我们的 tomcat 服务器的server.xml web.xml3xml 可以充当小型的数据库 程序自己的数据格式存放 直接读取文件显然要比读取数据库快 程序中可能用到的数据如果放在数据库中读取不合适(因为你要增加维护数据库工作) xml
创建 File - New -Project -java -New Project -New -File -文件名.xml 组成
1、文档声明 ?xml version1.0 encodingutf-8? 说明 1、XML 声明放在 XML 文档的第一行 2、XML 声明由以下几个部分组成 version - -文档符合XML1.0 规范,我们学习 1.0 encoding - -文档字符编码比如utf-8
2、元素 语法 每个XML文档必须有且只有一个根元素。 根元素 是一个完全包括文档中其他所有元素的元素 起始标记要放在所有其他元素的起始标记之前 结束标记要放在所有其他元素的结束标记之后 XML 元素/标签/节点 指XML 文件中出现的标签 一个标签分为开始标签和结束标签 一个标签中也可以嵌套若干子标签。 但所有标签必须合理的嵌套绝对不允许交叉嵌 书写形式 包含标签体awww.sohu.cn/a 不含标签体的a/a, 简写为a/ 命名规则 区分大小写例如P和p是两个不同的标记 不能以数字开头。 不能包含空格。 名称中间不能包含冒号: 如果标签单词需要间隔建议使用下划线 比如 book_titlehello/book_title
3、属性 基本格式 元素名 属性名属性值 说明 属性值用双引号或单引号分隔如果属性值中有用分隔有用分隔。 一个元素可以有多个属性。 特定的属性名称在同一个元素标记中只能出现一次。 属性值不能包括 字符。
Student ID100NameTOM/Name/Student
4、注释 语法格式 !--这是一个注释- - 说明 注释内容中不要出现- - 不要把注释放在标记中间错误写法 Name !--the name--TOM/Name。 注释不能嵌套 可以在除标记以外的任何地方放注释
5、CDATA 区 、特殊字符 语法 ![CDATA[ 这里可以把你输入的字符原样显示不会解析 xml ]]
说明 可以输入任意字符除]]外 不能嵌套 有些内容不想让解析引擎执行 而是当作原始内容处理(即当做普通文本) 可以使用 CDATA 包括起来 CDATA 节中的所有字符都会被当作简单文本 而不是 XML 标记
实例1
?xml version1.0 encodingutf-8?students student id01 name小龙女/name gender女/gender age19/age resume古墓派掌门人/resume /student student id02 name欧阳锋/name gender男/gender age21/age resume白驼山,蛤蟆神功/resume /student
/studentsDOM4j
介绍
官网dom4j 1.6.1 API
一个简单、灵活的开放源代码的库(用于解析/处理 XML 文件)。Dom4j 是由早期开发 JDOM 的人分离出来而后独立开发的。
使用接口和抽象基类虽然 Dom4j 的 API 相对要复杂一些但它提供了比 JDOM 更好的灵活性
一个非常优秀的 Java XML API具有性能优异、功能强大和极易使用的特点。
使用 Dom4j 开发需下载 dom4j 相应的 jar 文件。 注意xml常用来查询(遍历和指定查询)删改使用少,作为扩展。 获取document对象的3种方式 1、读取 XML 文件,获得 document 对象 //创建一个解析器SAXReader reader new SAXReader(); //XML DocumentDocument document reader.read(new File(src/input.xml)); 2、解析 XML 形式的文本,得到 document 对象.
String text members/members;Document document DocumentHelper.parseText(text); 3、主动创建document 对象.
//创建根节点 Document document DocumentHelper.createDocument();Element root document.addElement(members); 常用API attributes 返回该元素的属性列表 attributeValue 根据传入的属性名获取属性值 elementIterator 返回包含子元素的迭代器 elements 返回包含子元素的列表
应用实例 ?xml version1.0 encodingutf-8?studentsstudent id01name小龙女/namegender女/genderage19/ageresume古墓派掌门人/resume/studentstudent id02name欧阳锋/namegender男/genderage21/ageresume白驼山,蛤蟆神功/resume/student
/students
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.testng.annotations.Test;import java.io.File;
import java.io.FileOutputStream;
import java.util.List;public class Dom4j_ {/*** 演示如何加载xml文件*/
Test
public void loadXML() throws DocumentException {// 得到一个解析器SAXReader reader new SAXReader();Document document reader.read(new File(src/students.xml));System.out.println(document); // org.dom4j.tree.DefaultDocument887af79}/*** 遍历所有的student信息*/
Test
public void listStus() throws DocumentException {// 得到一个解析器SAXReader reader new SAXReader();Document document reader.read(new File(src/students.xml));// 1. 得到rootElement, 你是OOPElement rootElement document.getRootElement();// 2. 得到rootElement的student ElementsListElement students rootElement.elements(student);// System.out.println(student.size());//2for (Element student : students) {// element就是Student元素/节点// 获取Student元素 的name ElementElement name student.element(name);Element age student.element(age);Element resume student.element(resume);Element gender student.element(gender);System.out.println(学生信息 name.getText() age.getText() resume.getText() gender.getText());}}/*** 指定读取第一个学生的信息 就是 dom4jxpath*/
Test
public void readOne() throws DocumentException {// 得到一个解析器SAXReader reader new SAXReader();Document document reader.read(new File(src/students.xml));// 1. 得到rootElement, 你是OOPElement rootElement document.getRootElement();// 2. 获取第一个学生Element student (Element) rootElement.elements(student).get(1);// 3. 输出该信息System.out.println(该学生的信息 student.element(name).getText() student.element(age).getText() student.element(resume).getText() student.element(gender).getText());// 4. 获取student元素的属性System.out.println(id student.attributeValue(id));
}/*** 加元素(要求: 添加一个学生到xml中) [不要求使用少了解]** throws Exception*/
Test
public void add() throws Exception {// 1.得到解析器SAXReader saxReader new SAXReader();// 2.指定解析哪个xml文件Document document saxReader.read(new File(src/students.xml));// 首先我们来创建一个学生节点对象Element newStu DocumentHelper.createElement(student);Element newStu_name DocumentHelper.createElement(name);// 如何给元素添加属性newStu.addAttribute(id, 04);newStu_name.setText(宋江);// 创建age元素Element newStu_age DocumentHelper.createElement(age);newStu_age.setText(23);// 创建resume元素Element newStu_intro DocumentHelper.createElement(resume);newStu_intro.setText(梁山老大);// 把三个子元素节点加到 newStu下newStu.add(newStu_name);newStu.add(newStu_age);newStu.add(newStu_intro);// 再把newStu节点加到根元素document.getRootElement().add(newStu);// 直接输出会出现中文乱码:OutputFormat output OutputFormat.createPrettyPrint();output.setEncoding(utf-8);// 输出的编码utf-8// 把我们的xml文件更新// lets write to a file// new FileOutputStream(new File(src/myClass.xml))// 使用到io编程 FileOutputStream 就是文件字节输出流XMLWriter writer new XMLWriter(new FileOutputStream(new File(src/students.xml)), output);writer.write(document);writer.close();}/*** //删除元素(要求删除第一个学生) 使用少了解** throws Exception*/
Test
public void del() throws Exception {// 1.得到解析器SAXReader saxReader new SAXReader();// 2.指定解析哪个xml文件Document document saxReader.read(new File(src/students.xml));// 找到该元素第一个学生Element stu (Element) document.getRootElement().elements(student).get(2);// 删除元素stu.getParent().remove(stu);// //删除元素的某个属性
// stu.remove(stu.attribute(id));// 更新xml// 直接输出会出现中文乱码:OutputFormat output OutputFormat.createPrettyPrint();output.setEncoding(utf-8);// 输出的编码utf-8// 把我们的xml文件更新XMLWriter writer new XMLWriter(new FileOutputStream(new File(src/students.xml)), output);writer.write(document);writer.close();System.out.println(删除成功~);
}/*** //更新元素(要求把所有学生的年龄3) 使用少了解** throws Exception*/
Test
public void update() throws Exception {// 1.得到解析器SAXReader saxReader new SAXReader();// 2.指定解析哪个xml文件Document document saxReader.read(new File(src/students.xml));// 得到所有学生的年龄ListElement students document.getRootElement().elements(student);// 遍历, 所有的学生元素的age3for (Element student : students) {// 取出年龄Element age student.element(age);age.setText((Integer.parseInt(age.getText()) 3) );}// 更新// 直接输出会出现中文乱码:OutputFormat output OutputFormat.createPrettyPrint();output.setEncoding(utf-8);// 输出的编码utf-8// 把我们的xml文件更新XMLWriter writer new XMLWriter(new FileOutputStream(new File(src/students.xml)), output);writer.write(document);writer.close();System.out.println(更新成功~);
}
}其他
xml解析技术