第二十五天学习java

总结

XML

  • XMl:用于数据交互的一种格式
    • 语法格式:
      1. 注释不能放在第一行(ctrl+shift+c)
      2. 文档申明放第一行(版本号和字符集)
      3. 严格区分大小写
      4. 只能有一个根标签
      5. 一个标签不能有两个一样的标签
      6. 标签不能嵌套,就是不能开始和结束不在同一个标签里
      7. 标签的名字不能有空格(还有;)(名字不能用xml等保留字)
      8. 标签名以字母和下划线开始(不推荐下划线)
    • 关于特殊字符的处理方式:
      1. <![CDATA[文本]]>
      2. &lt <
      3. &gt >

XML解析

package cn.itsource1.parseXML;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

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 org.junit.After;
import org.junit.Before;
import org.junit.Test;


/**
 * @author 13454
 * 解析XML
 * 		需要用到第三方:dom4j
 */
public class ParseXMLTest {
	//设置在这里是为了大家都可以使用
	File file;
	Document doc;
	Element root;
	
	//初始化获取根节点
	@Before
	public void init() throws Exception{
		file = new File("src/cn/itsource1/parseXML/crud.xml");
		//第三方自带的输入流类
		SAXReader reader = new SAXReader();
		//获取xml文件对象
		doc = reader.read(file);
		//通过xml文件对象获取根节点对象
		root = doc.getRootElement();
	}
	
	//结束输出
	@After
	public void end() throws Exception{
		//第三方自带的类,用于漂亮打印
		OutputFormat prettyPrint = OutputFormat.createPrettyPrint();
		//第三方自带的类,用于输出
		XMLWriter xmlWriter = new XMLWriter(new FileWriter(file),prettyPrint);
		//传入doc对象输出
		xmlWriter.write(doc);
		xmlWriter.close();
	}
	
	//删除元素
	@Test
	public void delEle(){
		//通过调用父类删除自己
		List<Element> list = root.elements();
		Element body = list.get(2);
		body.getParent().remove(body);
	}
	
	//修改元素
	@Test
	public void update(){
		//通过集合获取子节点,然后修改文本
		List<Element> list = root.elements();
		Element body = list.get(2);
		Element name = body.element("name");
		name.setText("小芳");
	}
	
	//增加元素
	@Test
	public void add(){
		//获取body子节点
		Element body = root.addElement("body");
		//body下添加子节点并添加文本
		body.addElement("name").addText("小红");
		body.addElement("age").addText("24");
		body.addElement("sex").addText("女");
		body.addElement("height").addText("1.60");
		body.addElement("weight").addText("90");
	}
	
	//查找元素
	@Test
	public void findEle(){
		//获取根节点下面的所有子节点
		List<Element> list = root.elements();
		list.stream().forEach(System.out::println);
		
		//获取索引为1的子节点
		Element body = list.get(1);
		
		//获取body下面的所有子节点
		List bodylist = body.elements();
		bodylist.stream().forEach(System.out::println);
		
		//获取body下面的name子节点
		Element name = body.element("name");
		//获取name的文本
		String nameText = name.getText();
		System.out.println(nameText);
		
		//获取age的文本
		String ageText = body.element("age").getTextTrim();
		System.out.println(ageText);
	}
}

XPath: 通过xpath可以不用从根路径开始找,可以直接通过路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值