`

w3c dom操作Xml时从加入另一个XML文件的一个元素

阅读更多

同时读取两个XML文件,如果需要把一个XML 文件中的某个特定元素的内容插入到另外一个XML文件中时,要用importNode()方法,具体使用例子如下:

 

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.apache.commons.lang.StringUtils;
import org.apache.tools.ant.Task;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;



/*@author:duanqf*/
public class MergeBeanRefContext {
	private static Element sourceRoot;

	private static Element destRoot;

	private static Document sourceDoc;

	private static Document destDoc;

	public static void merge(String sourceXmlPath, String destXmlPath, Task task) {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		try {
			factory.setIgnoringElementContentWhitespace(true);
			DocumentBuilder db = factory.newDocumentBuilder();
			db.setEntityResolver(new EntityResolver() {
				public InputSource resolveEntity(String publicId,
						String systemId) throws SAXException, IOException {
					if (publicId!=null && publicId
							.equals("-//SPRING//DTD BEAN//EN")) {
						return new InputSource(new ByteArrayInputStream(
								"<?xml version='1.0' encoding='GBK'?>"
										.getBytes()));	

					}
					return null;
				}
			});
			sourceDoc = db.parse(new File(sourceXmlPath));
			sourceRoot = sourceDoc.getDocumentElement();
			destDoc = db.parse(new File(destXmlPath));
			destRoot = destDoc.getDocumentElement();
			execute(sourceDoc, destDoc, sourceRoot, destRoot, destXmlPath, task);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	private static void execute(Document sourceDoc, Document destDoc,
			Element sourceRoot, Element destRoot, String destXmlPath, Task task) {
		Node constructorListNode = ParseXmlTools.selectSingleNode(
				"/beans/bean[@id='qfContext']/constructor-arg/list",
				destRoot);
		NodeList destList = ParseXmlTools.selectNodes("value",
				constructorListNode);
		NodeList sourceList = ParseXmlTools.selectNodes(
				"/beans/bean[@id='qfContext']/constructor-arg/list/value",
				sourceRoot);
		Map destPatternsMap = new HashMap();
		for (int j = 0; j < destList.getLength(); j++) {
			Node value = destList.item(j);
			if (value != null) {
				String valueStr = value.getTextContent();
				if (StringUtils.isNotBlank(valueStr)) {
					valueStr = valueStr.trim();
					destPatternsMap.put(valueStr, value);
				}
			}
		}
		for (int j = 0; j < sourceList.getLength(); j++) {
			Node value = sourceList.item(j);
			if (value != null) {
				String valueStr = value.getTextContent();
				if (destPatternsMap.get(valueStr) == null) {
					Node temp = destDoc.importNode(value, true);
					constructorListNode.appendChild(temp);
					// task.log("Add qfContext bean constructor-arg value:"
					// + valueStr);
				}
			}
		}
		//ParseXmlTools.saveXml(destXmlPath, destDoc);
	}

 

分享到:
评论

相关推荐

    w3c 生成xml 换行实例

    w3c 生成xml 换行实例是使用 Java 语言通过 DOM(Document Object Model)来生成一个 XML 文档的示例代码。下面是该示例代码的详细解释: 首先,需要导入必要的包,包括 java.io、javax.xml.parsers、javax.xml....

    dom读取xml与写入xml

    在IT行业中,DOM(Document Object Model)是一种标准的XML(eXtensible Markup Language)和HTML文档的表示方法,它将这些文档解析成一个可编程的对象模型。这个模型由节点构成,包括元素、属性、文本等,使得...

    java dom 解析 xml 实例

    W3C DOM 接口提供了一个树形结构的对象模型,用于访问和操作 XML 文档中的元素和属性。DOM 接口包含了以下几个部分: 1. Document:表示 XML 文档的根元素。 2. Element:表示 XML 文档中的元素。 3. Node:表示 ...

    W3C DOM操作

    本文详细介绍了基于W3C标准的DOM操作,包括读取、修改和删除XML文档中的节点。这些操作对于处理XML数据非常重要,可以帮助开发人员高效地管理和操作结构化的数据。通过对这些基本概念和技术的理解,开发者可以在实际...

    使用DOM读取XML文件

    DOM(Document Object Model)是处理XML文档的一种主要方式,它将XML文档解析为一个可编程的对象树,允许我们通过JavaScript、Java、Python等语言来操作和访问XML数据。本文将深入探讨如何使用DOM读取XML文件,并...

    DOM_XML.rar_DOM_dom xml_dom xml java_dom解析xml_java解析xml

    标题中的"DOM_XML.rar"可能是一个包含DOM解析XML相关示例的压缩文件,"DOM_dom xml_dom xml java_dom解析xml_java解析xml"这部分描述了文件的主要内容,即关于DOM(Document Object Model)在XML解析中的应用,特别...

    易语言模块 XMLDOM 解析 构造 获取 更改 添加 删除 遍历元素 格式化XML

    1、XMLDOMDocument类: XML对象文档 -&gt;操作创建或读写(元素、节点、属性、注释)等 2、IXMLDOMNode类:每个元素或节点基本都会有的方法;作为元素和节点的基类调用 3、IXMLDOMAttribute类:就是元素或节点的属性类 4...

    java_dom解析xml xml java

    该XML文档包含了一个`&lt;File&gt;`元素,它有两个子元素:`&lt;Head&gt;`和`&lt;Body&gt;`。`&lt;Head&gt;`元素包含了文件的一些基本信息,如版本号、长度、时间戳和键索引;而`&lt;Body&gt;`元素则包含了具体的数据,例如一个`&lt;HLR&gt;`元素及其子...

    xmldom

    XMLDOM(XML Document Object Model)是用于处理XML文档的一个接口,它是W3C制定的一套标准,允许程序和脚本动态地访问和更新XML文档的内容、结构和样式。在这个chm格式的文件“XMLDOM对象方法手册”中,很显然包含...

    Java DOM 生成XML

    解析XML时,`DocumentBuilder`会构建一个DOM树,然后可以通过DOM API查询和修改树中的节点。 总结一下,Java DOM提供了一套全面的API来处理XML文档,包括创建、修改和读取XML结构。尽管DOM操作相对消耗资源,但其...

    读取XML文件的四种方法

    DOM是W3C组织制定的XML文档对象模型,它提供了对XML文档的树形结构表示。使用DOM方法读取XML文件,需要创建DocumentBuilderFactory对象,获取DocumentBuilder对象,然后解析XML文件得到Document对象。最后,使用...

    XML_DOM 教程 XML_DOM 教程

    DOM将XML文档视为一棵由节点构成的树,其中每个元素、属性、文本等都是一个独立的节点。 在W3C(World Wide Web Consortium)的标准中,DOM被分为三个不同的部分或级别: 1. **核心DOM**:这是一个通用的标准模型...

    android Dom解析xml文件

    DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点操作来访问和修改XML内容。本篇文章将深入探讨Android中的DOM解析XML文件,包括其基本原理、实现步骤和一些实用技巧。 ### 1. DOM解析的...

    DBMS_XMLDOM DBMS_XMLPARSER DBMS_XMLQUERY 文档

    DBMS_XMLDOM是Oracle提供的一个用于处理XML文档的对象模型包,它基于W3C的Document Object Model (DOM) 规范。DOM是一种与平台和语言无关的标准接口,可以用来访问和操作XML文档的结构。DBMS_XMLDOM提供了一系列的...

    Asp xmldom解析XML

    XMLDOM提供了一种标准的方式来解析、修改和操作XML数据,它遵循W3C DOM规范。在这个示例中,我们将深入探讨如何在ASP中使用XMLDOM对象解析XML文件。 首先,我们需要了解XMLDOM的主要组成部分。XMLDOM主要包括以下几...

    用DOM读写XML文件

    DOM将XML文档解析为一个可操作的对象模型,使得我们能够添加、修改或删除XML元素和属性。 首先,我们需要引入DOM解析器。在Java中,我们可以使用`javax.xml.parsers.DocumentBuilderFactory`和`javax.xml.parsers....

    DOM解析xml文件实例讲解

    首先,DOM解析的基本思想是将整个XML文件加载到内存中,形成一个树形结构,即DOM树。这样做的优点是解析后的数据可以方便地进行任意位置的查找和修改,但缺点是对内存和CPU资源消耗较大,不适用于处理大体积的XML...

    java平台中使用DOM解析xml文件

    DOM(Document Object Model)是处理XML的一种方法,它将XML文档转换为一个树形结构,允许开发者通过编程方式访问和修改XML文档的任何部分。在Java平台上,DOM解析器提供了对XML文档的全面和结构化的访问。 使用DOM...

    xml.rar_XML c语言_c语言 xml_resolver_xml解析 c_解析xml

    在C语言中,XML解析库如libxml2提供了DOM和SAX解析的功能,但在“xml.rar”中,开发者可能是基于C语言实现了一个轻量级的解析器,专为处理小到中等规模的XML文件设计。这有助于避免引入大型库的依赖,同时降低了程序...

    w3c 生成xml 文件

    总结来说,利用Java和W3C DOM API生成XML文件的过程涉及创建`DocumentBuilderFactory`、`DocumentBuilder`、`Document`以及一系列的`Element`对象,并通过这些对象构建XML文档的结构。最后,通过`Transformer`将整个...

Global site tag (gtag.js) - Google Analytics