微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

利用XML的dom进行数据的增删改查

importjava.io.FileOutputStream;

importjavax.swing.event.DocumentListener;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.parsers.ParserConfigurationException;
importjavax.xml.transform.Transformer;
importjavax.xml.transform.TransformerFactory;
importjavax.xml.transform.dom.DOMSource;
importjavax.xml.transform.stream.StreamResult;

importorg.junit.Test;
importorg.w3c.dom.Document;
importorg.w3c.dom.Element;
importorg.w3c.dom.Node;
importorg.w3c.dom.NodeList;

//使用DOM方式对XML文档进行CRUD
publicclassDemo2{
	
	//查询数据
	@Test
	publicvoidread()throwsException{
		//1:创建工厂
		DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
		
		//2:得到DOM解析器
		DocumentBuilderbuilder=factory.newDocumentBuilder();
		
		//3:解析XML文档,得到代表文档的document
		Documentdocument=builder.parse("src/book.xml");
		
		NodeListlist=document.getElementsByTagName("书名");
		Nodenode=list.item(1);
		Stringcontent=node.getTextContent();
		System.out.println(content);
	}
	
	//添加数据
	@Test
	publicvoidadd()throwsException{
		DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
		DocumentBuilderbuilder=factory.newDocumentBuilder();
		Documentdocument=builder.parse("src/book.xml");
		
		//创建节点
		Elementprice=document.createElement("售价");
		price.setTextContent("3.15元");

		//把创建的节点挂在第一本书上
		Elementbook=(Element)document.getElementsByTagName("书").item(0);
		book.appendChild(price);
		
		//把更新后内存写会到XML文档
		TransformerFactorytffactory=TransformerFactory.newInstance();
		Transformertf=tffactory.newTransformer();
		tf.transform(newDOMSource(document),newStreamResult(newFileOutputStream("src/book.xml")));
	}
	
	//向指定位置添加节点
	@Test
	publicvoidadd1()throwsException{
		DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
		DocumentBuilderbuilder=factory.newDocumentBuilder();
		Documentdocument=builder.parse("src/book.xml");
		
		//创建节点
		Elementprice=document.createElement("售价");
		price.setTextContent("5.25元");
		
		//得到参考节点
		ElementrefNode=(Element)document.getElementsByTagName("售价").item(0);
		
		//得到要挂载的节点
		Elementbook=(Element)document.getElementsByTagName("书").item(0);
		
		//往book节点的指定位置插入
		book.insertBefore(price,refNode);
		
		//把更新后内存写会到XML文档
		TransformerFactorytffactory=TransformerFactory.newInstance();
		Transformertf=tffactory.newTransformer();
		tf.transform(newDOMSource(document),newStreamResult(newFileOutputStream("src/book.xml")));
	}
	
	//向XML文档节点上添加属性
		@Test
		publicvoidaddattr()throwsException{
			DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
			DocumentBuilderbuilder=factory.newDocumentBuilder();
			Documentdocument=builder.parse("src/book.xml");
			
			//得到参考节点
			ElementbookName=(Element)document.getElementsByTagName("书名");
			bookName.setAttribute("name","XXXXX");
			
			//把更新后内存写会到XML文档
			TransformerFactorytffactory=TransformerFactory.newInstance();
			Transformertf=tffactory.newTransformer();
			tf.transform(newDOMSource(document),newStreamResult(newFileOutputStream("src/book.xml")));
		}
	
		//删除单个节点
		@Test
		publicvoiddelete()throwsException{
			DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
			DocumentBuilderbuilder=factory.newDocumentBuilder();
			Documentdocument=builder.parse("src/book.xml");
			
			//先得到要删除的节点
			ElementdelE=(Element)document.getElementsByTagName("售价").item(0);
			
			//得到要删除节点的爸爸
			Elementbook=(Element)document.getElementsByTagName("书").item(0);
			
			//爸爸删除
			book.removeChild(delE);
			
		}
		//删除全部节点
		@Test
		publicvoiddeleteall()throwsException{
			DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
			DocumentBuilderbuilder=factory.newDocumentBuilder();
			Documentdocument=builder.parse("src/book.xml");
			
			//先得到要删除的节点
			Elementbook=(Element)document.getElementsByTagName("售价").item(0);
			book.getParentNode().getParentNode().getParentNode().removeChild(book.getParentNode().getParentNode());
		
			//把更新后内存写会到XML文档
			TransformerFactorytffactory=TransformerFactory.newInstance();
			Transformertf=tffactory.newTransformer();
			tf.transform(newDOMSource(document),newStreamResult(newFileOutputStream("src/book.xml")));

		}
		
		//更新售价
		@Test
		publicvoidupdate()throwsException{
			DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
			DocumentBuilderbuilder=factory.newDocumentBuilder();
			Documentdocument=builder.parse("src/book.xml");
			
			Elementbook=(Element)document.getElementsByTagName("售价").item(0);	
			book.setTextContent("105");
			
			//把更新后内存写会到XML文档
			TransformerFactorytffactory=TransformerFactory.newInstance();
			Transformertf=tffactory.newTransformer();
			tf.transform(newDOMSource(document),newStreamResult(newFileOutputStream("src/book.xml")));

		}
}

书的XML

<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><书架>
	<书>
		<书名>Java培训</书名>
		<作者>张扬</作者>
		<售价>5.25元</售价>
	</书>

	<书>
		<书名>Java培训2</书名>
		<作者>张扬</作者>
		<售价>21.5</售价>
	</书>
</书架>

原文地址:https://www.jb51.cc/xml/293569.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。