前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XML解析

XML解析

作者头像
木瓜煲鸡脚
发布2019-07-22 16:10:57
3.1K0
发布2019-07-22 16:10:57
举报
文章被收录于专栏:Jasper小笔记

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.创建解析器工厂

代码语言:javascript
复制
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

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

代码语言:javascript
复制
DocumentBuilder builder = factory.newDocumentBuilder();

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

代码语言:javascript
复制
Document doc = builder.parse("src/xml/text.xml");

document对象筛选节点列表nodes

代码语言:javascript
复制
NodeList nodes = doc.getElementsByTagName("students");

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

代码语言:javascript
复制
Node node =nodes.item(0);

获取节点内容

代码语言:javascript
复制
System.out.println(node.getTextContent());

修改节点内容并同步

代码语言:javascript
复制
node.setTextContent("ss");
System.out.println(node.getTextContent());
Transformer transform = TransformerFactory.newInstance().newTransformer();
transform.transform(new DOMSource(doc),new StreamResult("src/xml/text.xml"));

删除元素节点

代码语言:javascript
复制
node.getParentNode().removeChild(node);

增添元素节点

代码语言:javascript
复制
  Element newElement = doc.createElement("newElement");
  newElement.setTextContent("内容");
  node.appendChild(newElement);

增添属性节点

代码语言:javascript
复制
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.创建解析器

代码语言:javascript
复制
SAXReader reader = new SAXReader();

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

代码语言:javascript
复制
Document doc = reader.read("src/xml/text.xml");

3.获取doc根元素

代码语言:javascript
复制
Element root = doc.getRootElement();

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

代码语言:javascript
复制
List<Element> list = root.elements();
    for (Element element : list) {
      Element name = element.element("name");
      System.out.println(name.getText());
    }

5.同步到文件

代码语言:javascript
复制
Writer wr = new OutputStreamWriter(new FileOutputStream("src/xml/text.xml"),"UTF-8");  
doc.write(wr);  
wr.close();

6.增加元素设置属性

代码语言:javascript
复制
Element newElement = root.addElement("newElement");
newElement.addAttribute("属性名","值");
newElement.setText("内容");
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT那个小笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档