- 浏览: 55255 次
- 性别:
- 来自: 武汉
最新评论
-
Stark_Summer:
很好 顶顶
android 面试题经典 -
fff32165:
LZ好牛啊!膜拜ing
activity与service的交互
package com.mgear.domparse;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
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 magicalXML {
public static void main(String[] args) throws ParserConfigurationException {
magicalXML u = new magicalXML();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
try {
// 读取源文件,如果不存在就创建一个新的给它
File f = new File("d:\\magical123.xml");
Document d = db.parse(f);
TransformerFactory tfFac = TransformerFactory.newInstance();
Transformer tf = tfFac.newTransformer();
tf.setOutputProperty(OutputKeys.ENCODING,"gb2312");
tf.setOutputProperty(OutputKeys.INDENT,"yes");
StreamResult result = new StreamResult(System.out);
DOMSource source = new DOMSource(d);
System.out.println("修改前的XML:");
tf.transform(source, result);
System.out.println();
// 打印元素名称和文本值
u.read(d);
// 为书名为"java basic"的作者增加属性sex
u.add(d, "java basic", "sex", "man");
// 修改书名为"java basic"的作者为"magicalboy"
u.update(d, "java basic", "magicalboy");
// 删除书名为"java basic"的作者元素
u.delete(d, "java basic");
System.out.println("修改后的XML:");
tf.setOutputProperty("encoding", "GB2312");
tf.transform(source, result);
// 保存修改后的xml文件
tf.transform(source, new StreamResult(
new File("d:\\magical123.xml")));
} catch (SAXException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
// 创建xml
Document dl = db.newDocument();
u.create(dl);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
// 创建方法
public void create(Document d) {
Element pub = d.createElement("publication");
Element book = d.createElement("book");
Element title = d.createElement("Title");
Element author = d.createElement("Author");
title.appendChild(d.createTextNode("java basic"));
author.appendChild(d.createTextNode("john"));
book.appendChild(title);
book.appendChild(author);
pub.appendChild(book);
book = d.createElement("book");
title = d.createElement("Title");
author = d.createElement("Author");
title.appendChild(d.createTextNode("magicalbook"));
author.appendChild(d.createTextNode("枫叶"));
book.appendChild(title);
book.appendChild(author);
pub.appendChild(book);
// 增加到根节点
d.appendChild(pub);
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer f = tf.newTransformer();
f.setOutputProperty("encoding", "GB2312");
System.out.println("正在创建新的xml...");
f.transform(new DOMSource(d), new StreamResult(new File(
"d:\\magical123.xml")));
System.out.println("创建新的xml成功!新的xml如下:");
f.transform(new DOMSource(d), new StreamResult(System.out));
} catch (Exception e) {
e.printStackTrace();
}
}
// 读取元素名称和文本值方法
public void read(Document d) {
NodeList nl = d.getElementsByTagName("*"); // 取所有结点
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getFirstChild().getNodeType() == Node.ELEMENT_NODE)
System.out.println("元素名称:" + nl.item(i).getNodeName());
else {
System.out.println("元素名称:" + nl.item(i).getNodeName());
System.out.println("文本值:" + nl.item(i).getTextContent());
}
}
}
// 元素增加属性方法
public void add(Document d, String title, String attr, String value) {
NodeList nl = d.getElementsByTagName("Title");
Node n;
Element author;
for (int i = 0; i < nl.getLength(); i++) {
n = nl.item(i);
author = (Element) n.getNextSibling().getNextSibling();
if (title.equals(n.getFirstChild().getNodeValue())) {
System.out.println("为元素" + author.getNodeName() + "增加" + attr
+ "属性:" + value);
author.setAttribute(attr, value);
}
}
}
// 修改方法
public void update(Document doc, String title, String author) {
NodeList nl = doc.getElementsByTagName("Title");
String strNode;
Element e;
// Node n;
// System.out.println("有" + nl.getLength() + "个book节点");
try {
for (int i = 0; i < nl.getLength(); i++) {
e = (Element) nl.item(i);
// n = nl.item(i);
strNode = e.getFirstChild().getNodeValue();
// System.out.println(strNode);
// strNode = n.getFirstChild().getNodeValue();
// System.out.println(strNode);
if (title.equals(strNode)) {
Element Eauthor = (Element) e.getNextSibling()
.getNextSibling();
System.out.println("修改前的Author:"
+ Eauthor.getFirstChild().getNodeValue());
Eauthor.getFirstChild().setNodeValue(author);
System.out.println("修改后的Author:"
+ Eauthor.getFirstChild().getNodeValue());
}
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
// 删除方法
public void delete(Document doc, String title) {
NodeList nl = doc.getElementsByTagName("Title");
Element e = doc.getDocumentElement();
Node n;
String strNode;
// System.out.println("\n有"+nl.getLength()+"个Title节点");
try {
for (int i = 0; i < nl.getLength(); i++) {
n = nl.item(i).getFirstChild();
strNode = n.getNodeValue();
// System.out.println(e.getNodeName());
// System.out.println(e.getFirstChild().getNextSibling().getNodeName());
// System.out.println(nl.item(i).getNodeName());
// System.out.println(strNode);
if (("java basic").equals(strNode)) {
System.out.println("\n准备要删除的书名为"
+ title
+ "的作者是:"
+ nl.item(i).getNextSibling().getNextSibling()
.getFirstChild().getNodeValue());
e.getFirstChild().getNextSibling().removeChild(
nl.item(i).getNextSibling().getNextSibling());
System.out.println("删除成功!");
}
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
}
转载自:http://6377936.blog.163.com/blog/static/3922283420094213950566/
发表评论
-
图的邻接矩阵实现
2019-11-12 09:24 0package com.iflytek.basejava.g ... -
有无向环图的邻接表实现
2019-11-05 22:54 0package com.pl.exercise.datast ... -
测试代码
2019-09-10 23:00 0package com.pl.exercise.datast ... -
解决使用通配符%或_,进行查询时可以查出所有数据的问题
2019-08-16 17:39 14171.对与标题中提到的问题,相信很多有点经验的web端开发者 ... -
设计模式
2013-03-05 20:31 0http://www.cnblogs.com/whgw/ar ... -
Java 引用 WeakReference
2013-03-04 10:25 0Reference 是一个抽象类,而 SoftReferen ... -
表达式计算
2012-09-16 15:39 0package com.mgear.pl; import j ... -
java基础之父类子类,static方法,构造函数 编译调用的优先顺序
2012-05-10 21:54 1064package dd; class Person { ... -
Hashtable和Hashmap的用法和运用
2012-05-08 22:04 959Hashtables提供了一个很 ... -
配置jdk环境变量
2011-06-19 13:07 674以jdk1.4.2_09为例,你可以根据你的jdk版本号及安装 ... -
关于 XML standalone 的解释
2011-05-24 16:04 1056今天做一个xml测试的时候 老是报 “XML 声明 ...
相关推荐
DOMParser接口提供了解析XML字符串并创建DOM文档的方法,以便于开发者可以使用DOM API来查询、修改或操作XML数据。 以下是对"DOMParser解析XML"这一主题的详细说明: 1. **DOMParser的基本使用**: 使用DOMParser...
下面我们将深入探讨DOM解析XML以及如何创建XML。 DOM解析XML的过程分为以下几个步骤: 1. **加载XML文档**:首先,我们需要通过DOM解析器加载XML文档。在JavaScript中,可以使用`DOMParser`对象的`parseFromString...
标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...
DOM解析会将整个XML文档加载到内存中形成一棵树形结构,方便访问任意节点,但内存消耗大;SAX解析则采用事件驱动,逐行读取XML,适合处理大型文档,但不支持随机访问。 三、DOM4J解析XML 1. 创建Document对象:使用...
在这个过程中,我们可以查找、修改或删除XML文档的特定部分。 首先,我们需要了解DOM解析的基本概念。在DOM解析中,XML文档被加载到内存中,形成一个由节点组成的树形结构。每个元素、属性、文本等都有对应的节点,...
在这个例子中,我们将深入探讨如何使用DOM解析XML文件,以理解和掌握XML文档的结构,并进行数据提取、修改和创建。 首先,XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据,具有自描述性和...
2. **操作XML元素**:DOM4J提供了一系列API来创建、删除、修改和查找XML元素,包括添加、移除属性,修改元素文本,遍历文档结构等。 3. **XPath支持**:DOM4J支持XPath表达式,这使得能快速定位和操作XML文档中的...
在处理复杂的XML文件时,我们通常需要借助解析库,如Dom4j,来帮助我们提取和操作XML中的信息。Dom4j是一个灵活且功能强大的Java库,它提供了丰富的API来处理XML文档,包括读取、写入、修改和查询。 1. **Dom4j基本...
DOM解析器的优点在于提供了一种灵活且易于使用的API,可以方便地进行添加、删除和修改XML内容。以下是一个DOM解析的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document...
DOM解析会一次性加载整个XML文档到内存,适合小规模的XML;SAX解析则采用事件驱动,逐行读取,适合处理大规模的XML文件。 - 解析XML的基本步骤:创建解析器工厂,通过工厂创建解析器,解析器读取XML文件并生成...
1. **引入DOM解析库**:在Java中,我们可以使用Java API for XML Processing (JAXP)提供的`DocumentBuilderFactory`和`DocumentBuilder`类来创建和使用DOM解析器。首先,确保引入了必要的库: ```java import javax...
通过DOM解析,开发者可以方便地遍历整个XML文档,对任意节点进行修改、添加或删除操作。以下是一些关键概念: 1. **Document对象**:DOM解析的核心,代表整个XML文档。 2. **Node对象**:表示XML文档中的每个元素,...
1. 加载XML:使用DOM解析器如Java的`DocumentBuilderFactory`创建`DocumentBuilder`,然后用它来解析XML文件,得到`Document`对象。 2. 获取根节点:`Document`对象的`getDocumentElement()`方法返回XML文档的根...
换句话说:XML DOM 是用于获取、更改、添加或删除 XML 元素的标准。 模块简介: 1、XMLDOMDocument类: XML对象文档 ->操作创建或读写(元素、节点、属性、注释)等 2、IXMLDOMNode类:每个元素或节点基本都会有的...
5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...
**DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...
以下是一个简单的DOM4J代码示例,展示如何使用DOM4J删除XML文档中的一个节点: ```java import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j....
5. **XML文档操作**:DOM4J提供了丰富的API,如添加、删除、移动和复制XML节点,以及修改节点内容和属性值。这些功能使得对XML文档的维护和更新变得非常方便。 6. **XPath和XSLT转换**:除了基本的XML操作,DOM4J还...