Dom解析 & 修改xml元素

Dom解析

真正的暴力派,先一口吃下,再慢慢顺藤摸瓜得到全部内容.哈哈....既然吃的太猛有可能就会被撑死...偷笑
解析原理-->是把整个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);
	}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值