Dom解析
真正的暴力派,先一口吃下,再慢慢顺藤摸瓜得到全部内容.哈哈....既然吃的太猛有可能就会被撑死...
![偷笑](http://static.blog.csdn.net/xheditor/xheditor_emot/default/titter.gif)
解析原理-->是把整个XML文件当做一个对象来处理,会先把整个文档读到内存中.是基于树状的机构的.可以很方便的增加 修改删除元素等操作,但也很容易造成内存溢出,在安卓开发中基本不用.
解析思路:
获取DocumentBuilderFactory -->
获取DocumentBuilder -->
通过documentBuilder 解析xml文档获得Document对象 -->
通过元素的名字
可以找到元素的集合
-->读出对应节点的文本内容.
public class DomSmartisan {
@Test
public void domSmartisan() throws Exception{
//获取DocumentBuilderFactory
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
//获取DocumentBuilder
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
//通过DocumentBuilder的方法解析XML文件得到document对象
Document document = documentBuilder.parse("smartisan.xml");
//通过元素的名字找到元素的集合
NodeList nodeList = document.getElementsByTagName("品牌");
//分别找出各个元素
Node node1 = nodeList.item(0);
//得到元素的String表示形式
String content1 = node1.getTextContent();
Node node2 = nodeList.item(1);
String content2 = node2.getTextContent();
System.out.println("第一个品牌是"+ content1 + ";" + "第二个品牌是"+ content2);
}
}
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<锤子手机>
<机型>
<品牌> Smartisan T 系列</品牌>
<价格>2480元</价格>
<厂商>锤子科技</厂商>
</机型>
<机型>
<品牌> 坚果手机 系列</品牌>
<价格>999</价格>
<厂商>锤子科技</厂商>
</机型>
</锤子手机>
Dom解析顺藤摸瓜可以很方便的增删修改等,下面将Smartisan的价格修改为3650...
public void domModify() throws Exception{
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse("smartisan.xml");
NodeList nodeList = document.getElementsByTagName("价格");
Node node = nodeList.item(0);
node.setTextContent("3650元");
//此时修改后的xml还存在内存中,需要把写入到smartisan.xml中.
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source xmlSource = new DOMSource(document);
Result outputTarget = new StreamResult("smartisan.xml");
transformer.transform(xmlSource, outputTarget);
}