漫画网站开发说明,一键建站系统源码,珠海企业网站建设制作,台州自助建站XML简介 (EXtensible Markup Language)
可扩展标记语言
特点 XML与操作系统、编程语言的开发平台无关实现不同系统之间的数据交换 作用 数据交互配置应用程序和网站Ajax基石
XML标签
XML文档内容由一系列标签元素组成
元素名 属性名属性值元素内容元素名 属性名属性值元素内容/元素名属性值用双引号包裹一个元素可以有多个属性属性值中不能直接包含 不建议使用的字符
XML编写注意事项
注意事项 所有XML元素都必须有结束标签XML标签对大小写敏感XML必须正确的嵌套同级标签以缩进对齐元素名称可以包含字母、数字或其他的字符元素名称不能以数字或者标点符号开始元素名称中不能包含空格
XML解析器
解析器类型 非验证解析器 检查文档格式是否良好 验证解析器 使用DTD检查文档的有效性
XML命名空间
XML命名空间的作用 解决在复杂 大型XML文件中 出现名称相同 但是含义不同的元素
?xml version1.0 encodingUTF-8?
cameras xmlns:canonhttp://www.canon
xmlns:nikonhttp://www.nikon.com
canon:camera prodIDP663 nameCamera傻瓜相机/
nikon:camera proIDK29B3 nameCamera超级35毫米相机/
/cameras解析XML技术
DOM 基于XML文档树结构的解析适用于多次访问的XML文档特点:比较消耗资源 SAX 基于事件的解析适用于大数据量的XML文档特点:占用资源少,内存消耗小 DOM4J 非常优秀的Java XML API性能优异、功能强大开放源代码
DOM解析XML
DOM介绍 文档对象模型(Document Object Model)DOM把XML文档映射成一个倒挂的树
常用接口介绍
DOM解析包:org.w3c.dom
常用接口常用方法说明Document:表示整个XML文档NodeList getElementsByTagName(String Tag)按文档顺序返回文档中指定标记名称的所有元素集合Element createElement(String tagName)创建指定标记名称的元素Node:该文档树中的单个节点NodeList getChildNodes()获取该元素的所有子节点,返回节点集合Element:XML文档中的一个元素String getTagName()获取元素名称
示例
?xml version1.0 encodingUTF-8 ?
!--根标签只能有一对儿--
books!--在标签内可以写属性--!--转义符 gt; lt; --!--1.属性值必须要用引号包裹2.一个元素可以有多条属性3.尽量不要使用 --book id1 bookname三体 price12/bookid1/idbookname三体/booknameprice12/price/book!--1. 所有的标签必须闭合--!--2. xml的标签对大小写敏感--!--3. 所有的xml标签 必须正确嵌套--!--4. 同级标签需要对齐缩进--!--5. 标签名称不能以数字或标点符号开始--/books练习
?xml version1.0 encodingUTF-8 ?
clothescloth rangeheightlt;165S/clothcloth range165gt;heightlt;170M/clothcloth range170gt;heightlt;175L/clothcloth range175gt;heightlt;180XL/clothcloth range180gt;heightXXL/cloth
/clothesimport org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;public class Test01 {public static void main(String[] args) {//通过解析器解析XML文件SAXReader saxReadernew SAXReader();try {saxReader.read(D:\\ideaworkspace\\J3071javaoop\\J3071JavaAdvanced\\src\\Learn\\Day\\Day230914\\XMLdemo\\clothes.xml);} catch (DocumentException e) {e.printStackTrace();}}
}
增删改查
查询
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.util.Iterator;public class Test01 {public static void main(String[] args) {//通过解析器解析XML文件SAXReader saxReadernew SAXReader();try {//通过解析器获取文件对象 Document 文件文档Document document saxReader.read(D:\\ideaworkspace\\J3071javaoop\\J3071JavaAdvanced\\src\\Learn\\Day\\Day230914\\XMLdemo\\clothes.xml);//获取根节点Element root document.getRootElement();//获取根节点的迭代器Iterator iterator root.elementIterator();while (iterator.hasNext()){//获取子节点元素 获取到的是cloth标签Element element(Element) iterator.next();//获取子元素节点的属性System.out.println(element.attributeValue(range));//获取子元素节点的文本内容System.out.println(element.getText());}} catch (DocumentException e) {e.printStackTrace();}}
} public class Test03 {public static void main(String[] args) {Test02 test02new Test02();//test02.add();//增加//test02.delete();//删除test02.update();//修改}
}
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;public class Test02 {//对xml文件进行增删改查private Document document;/*** 初始化*/public void init(){SAXReader saxReadernew SAXReader();try {document saxReader.read(D:\\ideaworkspace\\J3071javaoop\\J3071JavaAdvanced\\src\\Learn\\Day\\Day230914\\XMLdemo\\clothes.xml);} catch (DocumentException e) {e.printStackTrace();}}/*** 给xml文件内添加节点*/public void add(){init();//获取文档节点Element rootdocument.getRootElement();//在根节点下添加一个cloth节点Element cloth root.addElement(cloth);cloth.addAttribute(id,123);cloth.addText(今天中午吃什么);save();System.out.println(添加成功!!);}/*** 保存文件*/public void save(){//创建输出格式并设置输出编码OutputFormat formatOutputFormat.createCompactFormat();format.setEncoding(utf-8);try {XMLWriter xmlwriternew XMLWriter(new FileWriter(D:\\ideaworkspace\\J3071javaoop\\J3071JavaAdvanced\\src\\Learn\\Day\\Day230914\\XMLdemo\\clothes.xml));xmlwriter.write(document);xmlwriter.close();} catch (IOException e) {e.printStackTrace();}}/*** 删除节点*/public void delete(){init();//获取根节点Element rootdocument.getRootElement();//获取根节点迭代器Iterator iteratorroot.elementIterator();//遍历子节点while (iterator.hasNext()){//获取子节点对象Element e(Element) iterator.next();if (e.getText().equals(今天中午吃什么)){//从父节点中删除本节点e.getParent().remove(e);System.out.println(删除成功!!!);}}save();}/*** 修改*/public void update(){init();Element rootdocument.getRootElement();Iterator iteratorroot.elementIterator();while (iterator.hasNext()){Element e(Element) iterator.next();// attributeValue 属性值if (e.attributeValue(id)!nulle.attributeValue(id).equals(123)){e.addAttribute(price,999);//给指定节点添加属性System.out.println(修改成功);break;}}save();}}JOSN简介
JSON(JavaScript Object Notation) 轻量级的文本数据交换格式具有自我描述性比XML传输速度快 JSON最初用来表示JavaScript中的对象
JSON相互转换
public class Test {public static void main(String[] args) {Student studentnew Student();student.setName(张三);student.setAge(18);student.setHobby(new String[]{篮球, 足球, 乒乓球});System.out.println(student);//对象如何转换成 Json 字符串String str JSONObject.toJSONString(student);System.out.println(str);System.out.println(Json字符串转对象-------------------------------);//Json字符串如何转对象 解析对象Student s1 JSONObject.parseObject(str, Student.class);System.out.println(s1.toString());}
}重写toString()方法
import java.util.Arrays;public class Student {private String name;private Integer age;private String[] hobby;public String getName() {return name;}public void setName(String name) {this.name name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age age;}public String[] getHobby() {return hobby;}public void setHobby(String[] hobby) {this.hobby hobby;}Overridepublic String toString() {return { \name\:\ name \ \, age\: age , \hobby\: Arrays.toString(hobby) };}
}