Java 使用 dom4j 来获得 XML 文档的 innerXML

在网页的 Document 中如果想要获得某个结点的 innerHTML 就行,而在 Java 处理 XML 文档时想要获得某个节点的的 innerXML 就没那么简单的,标准的 org.w3c.Element 和  org.w3c.Node 均未提供类似 innerXML 的方法。

幸好,我们常用的 dom4j 里的 org.dom4j.Node 有一个方法是 String asXML(),不过它的意义相当于是 outerXML,也就是说它返回的内容还包括节点本身。

比如有这么在个 XML 文档:

上面文档,如果生成一个 org.dom4j.Node(节点是 BookList),那么它的 asXML() 结果就是上面内容本身,含前后的 <BookList> 和 </BookList>。要是想要得到真正的 innerXML 该如何做呢,很直接,把前后的节点 <BookList> 和 </BookList> 去了就是,于是有下面的完整实现代码:

有些地方介绍的是用递归循环子节点的办法进行字符串拼接的,还必须判断是否是文本节点。

其实我们还可以换一步来思考,既然 dom4j 提供了 asXML() 来得到 outerXML,它又是开源的,偷窥一下它的 outerXML 就能够实现一个自己更干净的 innerXML() 方法,也就是在 outerXML() 实现中直接忽略掉自身节点名。

类别: Java/JEE, XML/DOM. 标签: , , , . 阅读(434). 订阅评论. TrackBack.

Leave a Reply

Be the First to Comment!

avatar
wpDiscuz