XML解析

#2020云栖大会#阿里云海量offer来啦!投简历、赢阿里云限量礼品及阿里云ACA认证免费考试资格!>>> hot3.png

XML解析

  1. 什么是DOM

  2. 使用DOM的解析步骤

  3. 什么是dom4j

  4. 使用dom4的解析步骤

什么是DOM

DOM全称Document Object Model文档对象模型,将文档中的元素或者其他节点转换成一个一个的对象使用java代码操作XML或者js代码操作HTML


DOM解析的特点

在加载的时候一次性把整个的XML文档载入内存,在内存中形成一颗树(Document对象)

之后使用代码去操作Document对象,其实是操作的是内存当中的DOM树,和本地磁盘中的XML文件没有直接关系

由于操作的是内存当中的dom,磁盘中的xml内容并没有变所以,在操作完之后要进行同步

缺点:若xml文件过大可能会造成内存溢出


DOM的解析步骤

1.创建解析器工厂

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

通过解析器工厂对象创建解析器

DocumentBuilder builder = factory.newDocumentBuilder();

通过解析器解析xml得到document对象

Document doc = builder.parse("src/xml/text.xml");

document对象筛选节点列表nodes

NodeList nodes = doc.getElementsByTagName("students");

节点列表再去确定唯一的节点node

Node node =nodes.item(0);

获取节点内容

System.out.println(node.getTextContent());

修改节点内容并同步

node.setTextContent("ss");System.out.println(node.getTextContent());Transformer transform = TransformerFactory.newInstance().newTransformer();transform.transform(new DOMSource(doc),new StreamResult("src/xml/text.xml"));

删除元素节点

node.getParentNode().removeChild(node);

增添元素节点

  Element newElement = doc.createElement("newElement");  newElement.setTextContent("内容");  node.appendChild(newElement);

增添属性节点

Element e = (Element)node;e.setAttribute("属性名","属性值");


什么是dom4j

DOM4J是dom4j.org出品的一个开源XML解析包

dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件

越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这已经是必须使用的jar包, Hibernate也用它来读写配置文件。



dom4j解析步骤

1.创建解析器

SAXReader reader = new SAXReader();

2.解析器解析xml得到document对象

Document doc = reader.read("src/xml/text.xml");

3.获取doc根元素

Element root = doc.getRootElement();

4.遍历根元素下的元素,并找到所有元素下的name元素

List<Element> list = root.elements();    for (Element element : list) {      Element name = element.element("name");      System.out.println(name.getText());    }

5.同步到文件

Writer wr = new OutputStreamWriter(new FileOutputStream("src/xml/text.xml"),"UTF-8");  doc.write(wr);  wr.close();

6.增加元素设置属性

Element newElement = root.addElement("newElement");newElement.addAttribute("属性名","值");newElement.setText("内容");


9ff91ab8f35cfb4a0e07ad2a48247f5719a.png 71c5e975fed87721874dfd940ee9d0cc060.gif

勤学如春起之苗,不见其增,只有所长。辍学如磨刀之石,不见其增,日有所亏

愿你的今天胜过昨天



cd66aac9869e66170de90a486fc978a5b34.jpg



7322d6ed9ac2869d3af85630224fdda2895.png

本文分享自微信公众号 - IT那个小笔记(qq1839646816)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

posted @ 2019-07-18 19:43  木瓜煲鸡脚  阅读(37)  评论(0)    收藏  举报