可扩展标记语言
<元素名 属性名="属性值">元素内容</元素名>
<?xml version="1.0" encoding="UTF-8"?>
<cameras xmlns:canon="http://www.canon"
xmlns:nikon="http://www.nikon.com">
<canon:camera prodID="P663" name="Camera傻瓜相机"/>
<nikon:camera proID="K29B3" name="Camera超级35毫米相机"/>
</cameras>
常用接口 | 常用方法 | 说明 |
---|---|---|
Document:表示整个XML文档 | NodeList getElementsByTagName(String Tag) | 按文档顺序返回文档中指定标记名称的所有元素集合 |
Element createElement(String tagName) | 创建指定标记名称的元素 | |
Node:该文档树中的单个节点 | NodeList getChildNodes() | 获取该元素的所有子节点,返回节点集合 |
Element:XML文档中的一个元素 | String getTagName() | 获取元素名称 |
<?xml version="1.0" encoding="UTF-8" ?>
<!--根标签只能有一对儿-->
<books>
<!--在标签内可以写属性-->
<!--转义符 > > < < -->
<!--1.属性值必须要用引号包裹
2.一个元素可以有多条属性
3.尽量不要使用 < > -->
<book id="1" bookname="三体" price="12"/>
<book>
<id>1</id>
<bookname>三体</bookname>
<price>12</price>
</book>
<!--1. 所有的标签必须闭合-->
<!--2. xml的标签对大小写敏感-->
<!--3. 所有的xml标签 必须正确嵌套-->
<!--4. 同级标签需要对齐缩进-->
<!--5. 标签名称不能以数字或标点符号开始-->
</books>
<?xml version="1.0" encoding="UTF-8" ?>
<clothes>
<cloth range="height<165">S</cloth>
<cloth range="165>height<170">M</cloth>
<cloth range="170>height<175">L</cloth>
<cloth range="175>height<180">XL</cloth>
<cloth range="180>height">XXL</cloth>
</clothes>
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
public class Test01 {
public static void main(String[] args) {
//通过解析器解析XML文件
SAXReader saxReader=new 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 saxReader=new 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 test02=new 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 saxReader=new 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 root=document.getRootElement();
//在根节点下添加一个cloth节点
Element cloth = root.addElement("cloth");
cloth.addAttribute("id","123");
cloth.addText("今天中午吃什么");
save();
System.out.println("添加成功!!");
}
/**
* 保存文件
*/
public void save(){
//创建输出格式并设置输出编码
OutputFormat format=OutputFormat.createCompactFormat();
format.setEncoding("utf-8");
try {
XMLWriter xmlwriter=new 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 root=document.getRootElement();
//获取根节点迭代器
Iterator iterator=root.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 root=document.getRootElement();
Iterator iterator=root.elementIterator();
while (iterator.hasNext()){
Element e=(Element) iterator.next();
// attributeValue 属性值
if (e.attributeValue("id")!=null&&e.attributeValue("id").equals("123")){
e.addAttribute("price","999");//给指定节点添加属性
System.out.println("修改成功");
break;
}
}
save();
}
}
public class Test {
public static void main(String[] args) {
Student student=new 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;
}
@Override
public String toString() {
return "{" +
"\"name\":\"" + name + '\"' +
"\", age\":" + age +
", \"hobby\":" + Arrays.toString(hobby) +
'}';
}
}