`
jacky.jihao
  • 浏览: 153681 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用JDOM合并XML文档的小技巧

    博客分类:
  • J2SE
阅读更多
Exception in thread "main" org.jdom.IllegalAddException: The element "xs:schema" could not be added as the root of the document: The Content already has an existing parent document
	at org.jdom.ContentList.add(ContentList.java:205)
	at org.jdom.ContentList.add(ContentList.java:131)
	at java.util.AbstractList.add(AbstractList.java:89)
	at org.jdom.Element.addContent(Element.java:811)
	at demo.UPSchemaReader.ParseUPSchemaFile(UPSchemaReader.java:145)
	at demo.UPSchemaReader.main(UPSchemaReader.java:38)

 

使用JDOM,当你想把一个xml document 或者 Element 或者别的节点添加到另一个XML文档的时候,是不是遇到了这样的异常?

(Example code: someElement.addContent(someRootElement);)

 

原因是JDOM的add/remove方法会检查文档结构,不允许节点树里有循环,每个节点有且仅有一个根元素,并且要求命名空间一致。

 

那么如何使用JDOM合并XML文档呢?

知道之后其实很简单,Content类有个detach() 方法

(Example code: someElement.addContent(someRootElement.detach());)

 

 

 

 

---------------------

 

补充: 使用detach()要小心,会修改原来的对象,看上去使用clone()代替更好

 

---------------------

3
0
分享到:
评论
1 楼 java_frog 2013-01-18  
嗯,是,比方我在根节点下有7个子element,循环存的时候用detach存到第三方元素中就不足7个了,还是clone()好使,然后强制转换一下
for (int i = 0; i < reDoc.getRootElement().getContentSize(); i++) {
				mOutBodyEle.addContent((Element)(reDoc.getRootElement().getContent(i).clone()));
			}

相关推荐

    使用JDOM解析XML文件

    本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过Document对象表示整个XML文档,Element代表XML元素,Attribute表示元素属性,Text表示元素内的文本内容。这些类构成了...

    jdom 读取XML 文件

    JDOM是Java中一个用于处理XML文档的库,它提供了一种高效且方便的方式来创建、读取、修改XML文件。本篇文章将深入探讨如何使用JDOM来读取XML文件。 首先,我们需要了解JDOM的基本概念。JDOM通过构建一棵DOM...

    java 使用JDOM解析xml文件.docx

    Java 使用 JDOM 解析 XML 文件 Java 是一种广泛使用的程序设计语言,而 XML 是一种广泛使用的标记语言,用于存储和传输数据。在 Java 中,解析 XML 文件是一件常见的任务,而 JDOM 是一个流行的开源库,用于解析和...

    用jdom解析xml文件

    在这个例子中,我们将深入探讨如何使用JDOM解析XML文件,并进行遍历与构建。 首先,我们需要了解JDOM的基本概念。JDOM主要由三部分构成:SAXBuilder用于从XML源构建DOM树,Element代表XML文档的元素,Attribute代表...

    jdom解析xml文件小实例

    在这个小实例中,我们将深入探讨如何使用JDOM解析XML文件。 首先,我们需要引入JDOM的依赖。在Java项目中,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.jdom &lt;artifactId&gt;...

    java利用jdom读取xml文件

    JDOM对于中小规模的XML文件和简单的读写操作是非常合适的,但对于大规模或频繁的读写操作,可能需要考虑更高效的解决方案。总之,理解XML和掌握至少一种XML处理库是每个Java开发者必备的技能之一。

    JDOM解析xml文档实例(自己编写,仅供参考)

    `SAXBuilder`是JDOM中用于从XML源(文件或流)构建`Document`对象的类,它使用SAX(Simple API for XML)解析器。 2. 加载XML文件:`File xmlFile = new File("path/to/sohuchannel.xml");` 和 `Document document...

    jdom解析xml文件

    **JDOM解析XML文件** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java中,JDOM(Java Document Object Model)是一个流行的选择来解析和操作...

    利用JDOM解析xml文件

    JDOM是Java中一个专门用来处理XML的库,它提供了一种高效且方便的方式来创建、修改和读取XML文档。本篇文章将深入探讨如何利用JDOM解析XML文件,并基于XML中的类名生成相应的对象。 首先,我们需要理解JDOM的基本...

    java jdom解析xml

    - **优化策略**:如果确实需要处理大型XML文件,可以使用JDOM的SAXBuilder,它允许以SAX方式读取XML,但仍然使用JDOM API进行操作。 6. **示例代码** ```java import org.jdom2.Document; import org.jdom2....

    JDOM操作xml文件的xmlBean

    虽然本示例主要介绍了JDOM的操作方法,但根据描述中的建议,也可以考虑使用DOM4J进行XML文件的操作。DOM4J是一个功能强大的XML处理工具包,相比JDOM具有更丰富的特性和支持。例如: - DOM4J提供了更灵活的数据结构和...

    Jdom查找XML文件的所有节点内容

    使用JDOM解析XML文件的第一步是创建一个`SAXBuilder`对象,然后通过调用其`build`方法,传入XML文件的输入流,得到一个`Document`对象,该对象代表了整个XML文档。 ```java SAXBuilder sb = new SAXBuilder(); ...

    利用jdom操作xml文档

    本文详细介绍了如何使用 JDOM 库创建 XML 文档,以及如何进行基本的 XML 文件解析。通过这些基础操作,您可以轻松地使用 Java 来管理和操作 XML 数据。JDOM 的简洁性和易用性使其成为处理 XML 数据的理想选择之一。

    java利用jdom解析xml文件

    以上就是使用JDOM解析XML文件的基本流程和关键知识点。通过JDOM,你可以轻松地处理XML文档,无论是读取还是修改,都变得轻而易举。在实际开发中,掌握XML和JDOM的操作对于处理结构化数据和接口通信至关重要。

    jdom解析XML文件and把字符串解析成XML

    这段代码中,我们首先加载了XML文件,然后使用`SAXBuilder`类的`build()`方法解析XML内容,并获取文档的根元素。最后关闭输入流,并输出根元素的名称。 #### 三、将字符串解析为XML 除了解析文件之外,JDOM还支持...

    用jdom解析xml

    为了处理XML文档,开发者可以使用多种库,其中之一就是JDOM。JDOM是一个专门为Java设计的API,它提供了一种高效、方便的方式来构建和读取XML文档。在这个教程中,我们将深入探讨如何在JSP(JavaServer Pages)环境中...

    Web.xml文件配置JDOM對XML文件操作

    * fileName文件的路徑和名稱 * firstChild為xml第一個節點 * */ public Element ReaderXml(String fileName,String firstChild){ Element element=null; try{ File xmlFile = new File(fileName); ...

    jdom处理xml例子

    使用JDOM创建XML文档涉及以下几个步骤: 1. 创建`DocumentBuilderFactory`实例。 2. 使用`DocumentBuilderFactory`创建`DocumentBuilder`。 3. 使用`DocumentBuilder`的`newDocument()`方法创建空的`Document`对象...

    jdom解析xml、dtd约束xml文件

    这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写...

Global site tag (gtag.js) - Google Analytics