========
理解熟悉:
// StreamResult result=new StreamResult(new FileOutputStream(path));
// SteamResult:充当转换结果的持有者,可以为 XML、纯文本、HTML 或某些其他格式的标记。
// StreamResult(OutputStream outputStream);从字节流构造 StreamResult。
StreamResult result=new StreamResult(new OutputStreamWriter(new FileOutputStream(path), "gb2312"));
// 然后将被变换的Document对象封装到一个DOMSource对象中,DOMSource类在javax.xml.transform.dom包中。
DOMSource source=new DOMSource(document);
transformer.transform(source, result);
========
================================代码开始========================================
一。XMLDemo
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class XMLDemo { private Document document = null; public static void main(String[] args) { XMLDemo xd=new XMLDemo(); xd.getDocument(); xd.showInfo(); // xd.add(); // xd.update(); // xd.savaXML("new.xml"); // xd.delete(); } public void getDocument(){ try { //创建解析器工厂实例 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //通过工厂获得解析器 DocumentBuilder db; db = factory.newDocumentBuilder(); //解析器对象指定XML文件创建Document对象 document = db.parse("收藏信息.xml"); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } //载入元素 public void showInfo(){ //以Document为起点操作DOM树,拿到brand节点集合 NodeList brands =document.getElementsByTagName("brand"); for(int i=0;i<brands.getLength();i++){ //获得集合里的各个元素(element) Node node=(Node)brands.item(i); //类型转换为(element) Element eleBrand=(Element)node; //取得元素里 属性名name的属性值 System.out.println(eleBrand.getAttribute("name")); //拿到brand节点下子节点type集合 NodeList types=eleBrand.getChildNodes(); for(int j=0;j<types.getLength();j++){ Node typeNode=types.item(j); //为了过滤掉文本里空格和文本等,加上判断是否为元素,不然运行容易报错 if(typeNode.getNodeType()==Node.ELEMENT_NODE){ Element eleType=(Element)typeNode; System.out.println(" "+eleType.getAttribute("typename")); } } } } //保存新新XML文件 public void savaXML(String path){ /* * DOM对象转化为XML文件 解析器通过在内存中建立和XML结构相对应的树状结构数据,使得应用程序可以方便地获得XML文件中的数据, 同时提供了使用内存中的树状结构数据建立一个XML文件的API,即使用解析器得到的Document对象建立一个新的XML文件。 但是需要注意的是,Android2.1中没有相应的类包,从2.2开始才加入了。 解析器的parse方法将整个被解析的XML文件封装成一个Document节点返回, 我们可以对Document节点进行修改,然后使用 Transformer对象将一个Document节点变换为一个XML文件。 * */ TransformerFactory factory=TransformerFactory.newInstance(); factory.setAttribute("indent-number", "4"); try { Transformer transformer=factory.newTransformer(); transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // StreamResult result=new StreamResult(new FileOutputStream(path)); // SteamResult:充当转换结果的持有者,可以为 XML、纯文本、HTML 或某些其他格式的标记。 // StreamResult(OutputStream outputStream);从字节流构造 StreamResult。 StreamResult result=new StreamResult(new OutputStreamWriter(new FileOutputStream(path), "gb2312")); // 然后将被变换的Document对象封装到一个DOMSource对象中,DOMSource类在javax.xml.transform.dom包中。 DOMSource source=new DOMSource(document); transformer.transform(source, result); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } //增加元素 public void add(){ Element element=document.createElement("Brand"); element.setAttribute("name", "三星"); Element ele1=document.createElement("Type"); ele1.setAttribute("typename", "Note3"); element.appendChild(ele1); document.getElementsByTagName("PhoneInfo").item(0).appendChild(element); this.savaXML("new.xml"); } //删除元素 public void delete(){ NodeList brands=document.getElementsByTagName("Brand"); for(int i=0;i<brands.getLength();i++){ Node brand=brands.item(i); Element eleBrand=(Element)brand; if(eleBrand.getAttribute("name").equals("苹果")){ eleBrand.getParentNode().removeChild(eleBrand); } } // this.savaXML("new.xml"); } //修改元素,为每一个Brand增加一个id 属性分别为 0 1 2 ; public void update(){ NodeList brands=document.getElementsByTagName("Brand"); for(int i=0;i<brands.getLength();i++){ Node brand=brands.item(i); Element eleBrand=(Element)brand; eleBrand.setAttribute("id", i+""); } // this.savaXML("new.xml"); } }
二、收藏信息.xml
<?xml version="1.0" encoding="GB2312"?> <PhoneInfo> <brand name="华为"> <type typename="U8650"/> <type typename="HW123"/> <type typename="HW321"/> </brand> <brand name="苹果"> <type typename="iphone4"/> <type typename="iphone5"/> <type typename="iphone6"/> </brand> </PhoneInfo>
相关推荐
1. **加载XML文档**:首先,我们需要创建一个DOM解析器,如Java中的`DocumentBuilderFactory`和`DocumentBuilder`,它们用于读取XML文件并构建DOM树。 2. **获取根节点**:解析后的XML文档会被转换为一个`Document`...
DOMParser接口提供了解析XML字符串并创建DOM文档的方法,以便于开发者可以使用DOM API来查询、修改或操作XML数据。 以下是对"DOMParser解析XML"这一主题的详细说明: 1. **DOMParser的基本使用**: 使用DOMParser...
DOM解析器将整个XML文档加载到内存中,形成一个树形结构,称为DOM树。每个XML元素、属性、文本等都被表示为树中的节点。这种解析方式的优点是可以方便地通过节点关系进行遍历和修改,但缺点是占用内存大,尤其对于...
这个特定的版本可能包含了XML解析器如Apache Xerces或IBM XML4J,以及相关的接口和类,比如DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等解析方式。 DOM是XML数据的...
DOM解析器将整个XML文档加载到内存中,形成一个树形结构,便于对XML数据进行遍历和操作。以下是关于Android中DOM解析XML的详细知识讲解。 1. **DOM解析器简介** DOM解析器是XML解析的一种方法,它将整个XML文档...
XML解析器有多种类型,如DOM(Document Object Model)解析器,它将整个XML文档加载到内存中形成一棵树状结构,便于遍历和修改;SAX(Simple API for XML)解析器则采用事件驱动的方式,逐个处理XML元素,节省内存但...
在解析XML文档时,DOM一次性加载整个文档到内存中,构建出一个树形结构,方便开发者通过API直接查找、添加、删除和修改节点。相比于SAX解析器,DOM在解析时消耗更多资源,但提供了更直观和方便的编程模型。 DOM的...
1. **XML解析**:库首先解析XML字符串,将其转化为DOM(Document Object Model)树结构。DOM是一种标准,允许程序和脚本动态更新、添加和改变HTML或XML文档的内容和结构。 2. **DOM到JSON转换**:解析后的DOM树被...
DOM解析器将整个XML文档加载到内存中,形成一棵节点树,允许程序随意遍历和修改;而SAX解析器则采用事件驱动的方式,按需处理XML文档,占用资源较少,适用于大文件或内存有限的环境。 XML-Parser-2.36 版本可能包含...
这个“xml-dom4j解析工具类”显然是为了简化XML文档操作而设计的,它利用DOM4J库来处理XML数据。 首先,让我们详细了解一下DOM4J的核心概念。DOM4J提供了一个灵活的API,以树形结构表示XML文档。在DOM(Document ...
1. **DOM解析**:DOM是一种树型结构,它将整个XML文档加载到内存中,允许开发者通过节点遍历整个文档。这种方法适用于小型XML文件,因为大型文件可能会占用大量内存。DOM解析器的优点是易于操作和查询,但缺点是内存...
注意:xmldom 没有与 simple-xml-dom 一起安装 用法 基本的 可用的方法是parse和serialize 。 var xml = require ( 'simple-xml-dom' ) // Parse var dom = xml . parse ( '<hello>world</hello>' ) dom . ...
6. **StAX(Streaming API for XML)支持**:DOM4J也支持StAX解析器,这种解析方式结合了SAX的高效和DOM的易用性,可以在处理大型XML文件时节省内存。 7. **与JAXB集成**:DOM4J可以与Java Architecture for XML ...
DOM4j类包,已经打包,放在工程项目的BIN下
它使用文档对象模型(DOM)的方式解析XML,可解析 XML 文档,并根据该文档构建可读取、修改和保存的文档对象模型。 作为XML解析器,TinyXML-2具有以下特点: 1. 轻量级且易于集成:它体积小巧,代码简洁,易于集成...
它支持SAX和DOM解析器,同时也提供了XPath查询和事件驱动的处理模式。 2. **XML解析方式**:dom4j提供了两种主要的XML解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是流式解析,适用于...
它支持SAX和DOM解析器,同时提供了基于事件的解析模型和基于树的解析模型。此版本的主要特性包括: 1. 支持XPath:DOM4J提供了一种强大的方式来查询XML文档,通过XPath表达式可以轻松地找到需要的数据。 2. 文档...
它们为开发者提供了处理XML文档的强大工具,无论是在构建XML解析器、解析XML文件、创建XML文档,还是在XML数据的验证和转换中,都有广泛的应用。 在Java项目中,通常会将`xml-apis.jar`作为依赖引入,以便使用其...
在实际应用中,DOM技术常用于动态网页和Web应用程序,例如AJAX(Asynchronous JavaScript and XML)中,XML数据被请求并解析成DOM树,然后用JavaScript更新页面内容。此外,XMLHttpRequest对象也经常与DOM结合,用于...
### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...