How to parse Xml file -- DOM!

We can see that when we want to use the Dom4j to parse XML , we should import org.dom4j.*

At the same time ,that to parse XML by DOM ,we should import org.w3c.dom.*

The conclusion is that DOM and Dom4j is different and located in different jar.The DOM belongs to w3c and the Dom4j belongs to dom4j.

The DOM parser will load the whole xml file and create a DOM tree, it will cost much space of memoty and lead to memory leak.

So the DOM parser will be easily to modify the xml file.

The SAX parser will load the single node and cost little space of memory, while it's not so easy to modify the xml file.

The DOM parser belongs to JAXP(Java API for XML processing), and it is part of JavaSE includes the following parts:

  org.w3c.dom: provide the DOM parser to parse XML standard interface

  org.xml.sax: provide the SAX parser to parse XML standard interface

  javax.xml: provide the class of parsing XML file

But how do we parse XML by DOM?

  //1.get the DocumentBuilderFactory by its static method

  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

  //2.get the DocumentBuilder by DocumentBuilderFactory's newDocumentBuilder() method

  DocumentBuilder builder = factory.newDocumentBuilder();

  //3.get the Document object by DocumentBuilder

  Document document = DocumentBuilder.parse("book.xml");

  //4.to handle the document further ,we can use getElementByTagName("") method get the NodeList

  NodeList list = document.getElementByTagName("");

  //5.get the single specific node

  Node node = list.item(0);

  //6.print the node's text content

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

 

To improve the effeciency of using DOM to parse XML , write a util is not a bad idea,isn't it?

public class DOMUtils{

  public static Document getDocument(String path){

    return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(path);

  }

  

  public static Document getDocument(File file){

    return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(path);

  }

 

  public void writeXml2File(Document document,String path){

    TransformerFactory.newInstance().newTransformer.transform(new DOMSource(document),new StreamResult(path));

  }

}

To append an element to a specific element by DOM , we can use these code:

  //1.create an element first

  Element element = document.createElement("element's name");

  //2.set the element's text content

  element.setTextContent("element's content text");

  //3.set the element as the child element and append this child element to the parent element.

  parentElement.appendChild(element);

转载于:https://www.cnblogs.com/ppcoder/p/7147630.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值