加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

1月10日之day02--xml解析技术 dom4j

发布时间:2020-12-16 06:31:42 所属栏目:百科 来源:网络整理
导读:xml学习 xml语法 元素、属性、注释 文档声明:?xml version="1.0" encoding="utf-8" ? 注释:!-- 这就是xml注释 Dom模型---文档对象模型 |--Node |--Document 文档对象 |--Element标签 |--Attr 属性 |--Text 文本内容 |--Comment 注释 XML解析技术 DOM 技术

xml学习

xml语法

元素、属性、注释

文档声明:<?xml version="1.0" encoding="utf-8" ?>

注释:<!-- 这就是xml注释>

Dom模型---文档对象模型

|--Node

|--Document 文档对象

|--Element标签

|--Attr 属性

|--Text 文本内容

|--Comment 注释

XML解析技术

DOM 技术

DOM解析 dom4j 和 jaxp

6. Dom4j解析技术
开源组织提供的解析XML的开发包!


使用步骤:
1. 添加jar文件
2. 添加到类路径下




常用方法:
doc.getRootElement()根节点
ele.element("");ele的指定名称的第一个子节点
ele.elements();ele的所有子节点
ele.elementText("");ele指定名称的第一个子节点文本内容

	// 4. 获取全部信息
	@Test
	public void readAllInfo() throws DocumentException {
		SAXReader reader = new SAXReader();
		Document doc = reader.read("src/book.xml");
		// 获取根节点
		Element root = doc.getRootElement();
		// 显示根节点的子元素及所有子孙元素信息
		showAllInfo(root);
	}

	private void showAllInfo(Element root) {
		// 输出标签名称
		System.out.print("<" + root.getName()+" >");
		// 由于属性在标签里,所有在此迭代属性
		for (Iterator<Attribute> it = root.attributeIterator();it.hasNext();){
			// 获取每一个属性对象
			Attribute att = it.next();
			// 属性名称与属性值
			System.out.print(att.getName() + "=" + att.getText());
		}

		// 遍历所有的节点
		for (Iterator<Node> it = root.nodeIterator(); it.hasNext();) {
			// 获取当前元素的每一个节点
			Node node = it.next();
			// 判断:如果当期节点是标签,递归调用
			if (node instanceof Element) {
				Element e = (Element) node;
				showAllInfo(e);
			} 
			// 文本内容
			else if (node instanceof Text) {
				Text t = (Text) node;
				System.out.print(t.getText());
			} 
			else if (node instanceof Comment) {
				Comment c = (Comment) node;
				System.out.print("<!--"+c.getText()+"-->");
			}
		}
		System.out.print("</" + root.getName()+">");
	}

	// 3. 获取编号为“A002” 的书的售价
	@Test
	public void readBookNameByNo() throws DocumentException {
		SAXReader reader = new SAXReader();
		Document doc = reader.read("src/book.xml");

		// 1. 得到根节点
		Element root = doc.getRootElement();

		// 2. 遍历根节点
		for (Iterator<Element> it = root.elementIterator(); it.hasNext();) {
			// 3. 拿到每一个子节点(书)
			Element book = it.next();
			// 4. 得到属性
			String bookNo = book.attributeValue("编号");
			// 5. 判断,找到编号为A002的书信息,再取出售价
			if ("A001".equals(bookNo)) {
				String price = book.elementText("售价");
				System.out.println(price);
				break;
			}
		}

	}

	// 2. 获取第二本书,书名
	@Test
	public void readElement2() throws DocumentException {
		// 解析器
		SAXReader reader = new SAXReader();
		Document doc = reader.read("src/book.xml");

		// 根
		Element root = doc.getRootElement();

		// root节点下所有子节点的列表
		List<Element> list = root.elements();

		// 获取第二本书
		Element sen_book = list.get(1);

		// 获取书名节点
		// Element bookName = sen_book.element("书名");
		// System.out.println(bookName.getText());

		String bookName = sen_book.elementText("书名");
		System.out.println(bookName);

	}

	// 1. 获取第一本书,书名
	@Test
	public void readElement() throws DocumentException {
		// 获取解析器
		SAXReader reader = new SAXReader();
		// 通过解析器拿到文档对象
		Document doc = reader.read("src/book.xml");

		// 获取根节点
		Element root = doc.getRootElement();

		// 获取“书”节点 (获取root节点下第一个子节点)
		Element ele_book = root.element("书");

		// 获取"书" 节点下“书名”子节点
		Element ele_bookName = ele_book.element("书名");

		// 获取文本
		String bookName = ele_bookName.getText();

		System.out.println(bookName);
	}
ele.attributeIterator(); 迭代ele标签的所有属性 ele.nodeIterator(); 迭代ele标签的所有节点

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读