来源:http://www.cnblogs.com/jimmyqwy/archive/2010/07/10/1774934.html
最近稍微接触了下用Java Dom 解析XML的文件。
遇到两个小问题,就在这里做个笔记吧~
1. Node 的 getNodeValue方法返回的一直是null。
其实还是由于对这个类不熟悉的关系,导致了这个问题。
Node有很多类型,一般<html> </html> 这种类型叫做Element Node。
需要得到其中的文本,直接使用getNodeValue方法是行不通的。
因为此Node中包含的文本其实是属于另外一种Node类型,即 Text Node。
所以此文本对应的Node,是上述<html> Element Node的子节点。
解决方法:如同网上各处所说的
.getFirstChild().getNodeValue(); (第一个子节点的Value值)
至于为啥Element Node的Node Value是null值,
参照JavaDoc可知,其定义就是如此。详细参照如下:
http://download.oracle.com/docs/cd/E17476_01/javase/1.4.2/docs/api/org/w3c/dom/Node.html
2. XML保存问题
使用了很多方法,不是有异常,就是输出为空文件。
后来发现,还是有一些需要注意的地方。
先上代码:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
File f = new File( save_filename ); // 需要保存的名字
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
// createing a new DOM-document...
Document document = builder.newDocument(); // 1)
Element saveRoot = document.createElement("Root");
document.appendChild(saveRoot); // 2)
saveTree( saveRoot, document ); // 添加各种节点,建立DOM树
// Use a Transformer for output
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty("indent", "yes"); // 3)
// transform DOM 2 XML file // 4)
DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult( f );
transformer.transform(source, result);
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
其中使用到的
DocumentBuilderFactory / DocumentBuilder / TransformerFactory / DOMSource / StreamResult
意如其名,不用多解释了。
Question
1)全新 Document 的建立方式。
也可以使用读取时,建立的Document对象,只要更新相关的节点再保存即可。
此处为了练手,还是从头写了一遍。
2)document.appendChild 根节点
一开始词句忘记添加,所以导致输出空文本。
究其原因就是即使document.createElement后,也只是一个悬空节点,没有建立任何关系。
尤其是根节点,需要串联到document上。
3)此处即使使用了setOutputProperty("indent", "yes");
输出的文本文件,虽然节点之间有换行,
但是没有缩进,父节点和子节点的关系不是很明显。
解决方法:
在添加节点同时再添加一个上述的TextNode类型的子节点。
document.createTextNode("\n ");
(不知道还有没有其他更加好的办法。。。)
分享到:
相关推荐
DOM4J提供了几个核心类和接口来帮助我们操作XML文档: 1. **Document**: 表示整个XML文档。 2. **Element**: 表示XML文档中的元素。 3. **Attribute**: 表示元素的属性。 4. **Text**: 表示元素中的文本内容。 5. *...
Java DOM4J库是用于处理XML文档的一个强大的开源框架,它提供了一种简单而灵活的方式来创建、解析和操作XML文件。DOM4J这个名字中的“DOM”代表文档对象模型(Document Object Model),这是一种标准的API,用于在...
DOM4j则是一个强大的Java库,用于处理XML文档,提供了丰富的API来实现XML的读取、写入、修改等操作。在这个示例中,我们将深入探讨如何利用Maven管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是...
### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J(Document Object Model for XML)是一款用于处理XML文档的轻量级Java库。它提供了一种非常简单且灵活的方式来创建、读取、修改和删除XML文档。DOM4J的主要...
接下来,我们将通过几个关键步骤来演示如何使用Dom4J解析XML文件: 1. **加载XML文档**:使用`DocumentFactory`创建一个`Document`对象,该对象代表整个XML文档。可以使用`DocumentHelper.parseText()`或`SAXReader...
在Java XML处理中,DOM4J通常用于以下几个场景: - **XML解析**:读取XML文件并将其转化为内存中的数据结构,方便进一步处理。 - **XML生成**:创建XML文档,添加元素、属性和文本,然后保存为文件。 - **XML查询**...
本文将深入探讨几种不同的XML解析方法,并通过实际的“Java解析XML性能对比分析Demo”来展示它们的性能差异。我们将讨论DOM、SAX、JDOM、DOM4J和JAXB这五种解析器,以及它们各自的特点和适用场景。 1. DOM(文档...
基于这些信息,我们可以推断出以下几个Java编程相关的重要知识点: 1. **XML处理**:Java提供了多种XML处理API,如DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)。...
Java DOM 解析 XML 实例是 Java 语言中常用的 XML 解析方法之一,使用 W3C 推荐的文档对象模型(Document Object Model,DOM)来解析 XML 文档。DOM 提供了一个树形结构的对象模型,通过遍历树形结构可以访问和操作 ...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。在处理大文件时,DOM4J结合XPath的使用,可以有效地管理和分析大量数据。在这个场景下,描述...
DOM4J作为XML解析器,它以Java集合框架为基础,使得XML处理变得简单易懂。 首先,让我们了解DOM4J的几个核心概念: 1. **Element(元素)**:XML文档中的节点,如`<tag>`,包含属性和子元素。 2. **Attribute(属性...
在Java中,DOM解析主要涉及以下几个步骤: 1. **创建DocumentBuilderFactory实例** ```java DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); ``` 这里使用`DocumentBuilderFactory`的目的...
在"ParseXml"这个压缩包中,可能包含了示例代码,演示了如何使用JDOM、DOM4J和DOM解析XML文件。通过阅读和理解这些代码,你可以更好地掌握这些库的用法,提升处理XML文件的能力。记得实践是检验理论的最好方式,尝试...
在 JAVA 中,DOM 解析 XML 文件的过程主要涉及到以下几个步骤: 1. 创建一个 DocumentBuilderFactory 对象 DocumentBuilderFactory 是一个工厂类,用于创建 DocumentBuilder 对象。DocumentBuilder 对象是用于解析 ...
- 如何在Java中创建和解析XML文档,包括使用DOM、SAX、StAX或JAXB。 - CSV文件的读写操作,以及如何处理逗号分隔的数据。 - 如何使用IDE进行项目管理和代码编辑。 最后,虽然`Friends215.mp3` 不是与Java编程直接...
### Dom4j解析XML及其中文问题解决 #### 一、Dom4j简介 Dom4j是一种用于处理XML的Java库,它提供了一种简洁而强大的API来读取、写入和操作XML数据。自2001年首次发布以来,Dom4j因其直观的接口和高效的性能而在...
在DOM4J中,解析XML文件主要有以下几个步骤: 1. **导入DOM4J库**:首先,你需要在项目中引入DOM4J库。这通常通过Maven或Gradle的依赖管理工具完成。例如,在Maven的pom.xml文件中添加如下依赖: ```xml ...
DOM4J是一个强大的Java库,专门用于处理XML文档。它是一个灵活且功能丰富的XML API,提供了包括读取、写入、修改以及查询XML文件在内的多种功能。DOM4J的使用大大简化了Java开发者处理XML文档的过程,使得XML数据的...