JAXP-DOM解析xml(CURD)

public class CUDTest {

	public static void main(String[] args) throws Exception{

		//将内存中的document,另存到books2.xml文件中

		Document document = CUDTest.getDocument();

		//将document的内容修改:添加、删除、修改

		//添加
		/* 添加的内容
		 * <book id="b002">
				<title>Thinking in Java</title>
			 	<price>22000</price>
			</book>
		 * 给谁添加:根元素 books
		 */

		//获得books根元素
		Element rootElement = document.getDocumentElement();

		//创建book元素
		Element  newBook = document.createElement("book");
		//设置id属性
		newBook.setAttribute("id", "b003");

		//创建title元素
		Element titleElement = document.createElement("title");
		//将title元素,添加到新book元素中
		newBook.appendChild(titleElement);
		//给title添加值
		titleElement.setTextContent("凤姐写真");

		//将book元素添加到books根元素中

		rootElement.appendChild(newBook);

		//保存
		saveXml(document);
	}

	private void delete() throws Exception{
<span style="white-space:pre">		</span>//将内存中的document,另存到books2.xml文件中

		Document document = CUDTest.getDocument();		

		//将document的内容修改:添加、删除、修改

		//删除   <book id="b001">
		//获得所有的书籍
		NodeList bookList = document.getElementsByTagName("book");
		for(int n = 0 ; n < bookList.getLength() ; n ++){
			//获得每一本书
			Node bookNode = bookList.item(n);
			//获得id的值
			Element bookElement = (Element) bookNode;
			String id = bookElement.getAttribute("id");
			//判断book id == b001
			if("b001".equals(id)){
				//删除 bookElement  当前节点,调用父节点,进行操作
				//获得父节点
				Node parent = bookElement.getParentNode();
				//操作
				parent.removeChild(bookElement);
			}

		}

		//保存
		saveXml(document);
	}
	private void update() throws Exception{
		//将内存中的document,另存到books2.xml文件中

		Document document = CUDTest.getDocument();

		//将document的内容修改:添加、删除、修改

		//修改   <book id="b001"><title>Java</title>   --》 Java Core
		//获得所有的书籍
		NodeList bookList = document.getElementsByTagName("book");
		for(int n = 0 ; n < bookList.getLength() ; n ++){
			//获得每一本书
			Node bookNode = bookList.item(n);
			//获得id的值
			Element bookElement = (Element) bookNode;
			String id = bookElement.getAttribute("id");
			//判断book id == b001
			if("b001".equals(id)){
				//获得所有的title
				NodeList childList = bookElement.getElementsByTagName("title");
				//获得唯一一个title
				Node title = childList.item(0);
				//获得title
				System.out.println(title.getTextContent());
				//设置值
				title.setTextContent("Java Core");
			}

		}

		//保存
		saveXml(document);
	}

	private static void saveXml(Document document) throws Exception {
		//获得持久化对象实例工厂
		TransformerFactory factory = TransformerFactory.newInstance();

		//获得持久化对象
		Transformer transformer = factory.newTransformer();
		//将内存数据,保存到硬盘

		//源:document  将document封装到Source
		Source xmlSource = new DOMSource(document);
		//结果:books2.xml  将“文件路径”封装到Result
		Result outputTarget = new StreamResult("books2.xml");
		transformer.transform(xmlSource, outputTarget);

		System.out.println("done");
	}

	/**
	 * 获得document对象
	 * @return
	 */
	public static Document getDocument() throws Exception{
		//获得工厂实例
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		//获得解析器
		DocumentBuilder builder = factory.newDocumentBuilder();
		//获得document
		Document document = builder.parse("books.xml");

		return document;
	}

}

忽略元素中空白内容

builderFactory.setIgnoringElementContentWhitespace(true);

节点的操作:

getAttribute(String):返回标签中给定属性的值(元素)

getAttributeNode(name):返回指定名称的属性节点(元素)

getNodeName():返回节点的名称(元素-- > 标签名)

getNodeType():返回节点的类型

getNodeValue():返回节点的值

getChildNodes():返回这个节点的所有子节点列表

getFirstChild():返回这个节点的第一个子节点

getParentNode():返回这个节点的父节点对象

appendChild(org.w3c.dom.Node):为这个节点添加一个子节点,并放在所有子节点的最后,如果这个子节点已经存

在,则先把它删掉再添加进去

removeChild(org.w3c.dom.Node):删除给定的子节点对象

replaceChild(org.w3c.dom.Node new,org.w3c.dom.Node old):用一个新的Node对象代替给定的子节点对象

getNextSibling():返回在DOM树中这个节点的下一个兄弟节点,对等的,还有getPreviousSibling()方法返回其前一

个兄弟节点

getPreviousSibling()方法返回其前一个兄弟节点

时间: 2024-10-11 17:06:08

JAXP-DOM解析xml(CURD)的相关文章

DOM解析XML

DOM的文档驱动 处理DOM的时候,我们需要读入整个的XML文档,然后在内存中创建DOM树,生成 DOM树上的每个Node对象 优点是:可以对XML文档进行增删改查的复杂操作,可以随时按照节点间的关系访问数据 缺点: 受内存容量限制,不能处理大的文档,由于没有索引机制,处理效率较低 DOM(文档对象模型),为XML文档的解析定义了一组接口,解析器读入整个文档,然后构造一个驻留内存的树结构,然后代码就可以使用DOM接口来 操组整个树结构,其他点如下: 优点:整个文档树都在内存当中,便于操作:支持删

DOM的概念和简单应用:使用DOM解析XML数据

概念:DOM是Document Object Model的简称,即文档数据模型. Oracle公司提供了JAXP(Java API for XML Processing)来解析XML.JAXP会把XML文档转换成一个DOM树,JAXP的三个包都在JDK中. org.w3c.dom;W3C推荐的解析文档的接口 org.xml.sax;使用SAX解析XML文档的接口 javax.xml.parsers;解析器工厂工具 一.使用DOM解析XML文档的步骤 1.创建解析器工厂对象,即DocumentBu

java中的xml简介与DOM解析xml

1. xml简介 XML:指可扩展标记语言, Extensible Markup Language:类似HTML.XML的设计宗旨是传输数据,而非显示数据. 一个xml文档实例: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <company name="Tencent" address="深圳市南山区"> 3 <department deptNo=&quo

xml语法、DTD约束xml、Schema约束xml、DOM解析xml

今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据.而html使用的标签html语言规定好的,每个标签都有自己特定的功能. xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使

Java从零开始学四十二(DOM解析XML)

一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone="no"?> <PhoneInfo name="手机品牌"> <Brand name="华为"> <Type name="U8650"> </Type> </Brand

org.w3c.dom(java dom)解析XML文档

位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 2.解析器:DocumentBuilder 创建方法:通过解析器工厂类来获得 DocumentBu

Android之DOM解析XML

一.DOM解析方法介绍 DOM是基于树形结构的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树,检索所需数据.分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息. Android完全支持DOM解析.利用DOM中的对象可以对XML文档进行读取.搜索.修改.添加和删除等操作. DOM的工作原理:使用DOM对XML文件进行操作时,首先要解析文件,将文件分为独立的元素.树形和注释等,然后以节点树的形式在内存中对XML文件进行表示,就可以通过节点树访问文档的内容,并

DOM解析XML文件

除了可以使用SAX解析XML文件,大家也可以使用熟悉的DOM来解析XML文件. DOM解析XML文件时,会将XML文件的所有内容读取到内存中,然后允许您使用DOMAPI遍历XML树.检索所需的数据.使用DOM操作XML的代码看起来比较直观,并且,在某些方面比基于SAX的实现更加简单.但是,因为DOM需要将XML文件的所有内容读取到内存中,所以内存的消耗比较大,特别对于运行Android的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用SAX来解析XML文件,当然,如果XML文件的内容比较小

Android DOM解析XML方法及优化

在Android应用开发中,我们常常要在应用启动后从服务器下载一些配置文件,这些配置文件包含一些项目中可能用到的资源,这些文件很多情况下是XML文件,这时就要将XML下载到文件中保存,之后再解析XML.解析XML的方法有DOM, SAX, JDOM, DOM4J,本文中只使用了DOM,下面先介绍DOM的基础知识和解析XML的方法,然后再结合一个项目实例来实现从XML文件的下载到解析整个过程. DOM(Document Object Model,文档对象模型)定义了访问和操作XML的标准方法.基于

Dom解析xml,只是简单的解析出有效元素的元素名,元素值,属性名和属性值

DOM使用简单,但只适合于一些小的Xml文档,因为Dom解析Xml文档时,要将其读入内存,生成DOM树. 具体操作方法如下 要解析的XML文档 <persons> <person id="1001"> <name><![CDATA[<>上上</>]]></name> <!-- <![CDATA[<>上上</>]]> 预定义字符3. --> <sex&