`
百合不是茶
  • 浏览: 354967 次
社区版块
存档分类
最新评论

DOM解析与添加技术

阅读更多

向xml文件中添加元素;

    未添加前的xml文档;



 

添加元素创建的新文件


 

 

新文件中的xml元素;



 

DOM获取元素的思路:XML的DOM解析技术详解

 

DOM技术添加元素的思路;

    

          1,获得节点

         2,创建元素createElement   .内容createTextNode ,元素属性createAttribute

           3实例化xml转化器

         4,创建xml转化的工厂

         5,获得要添加元素的节点

        6,创建输出流,将新文档写出去

        7,使用转化器来装换

 

 

JAVA实现代码如下;代码已经打包

   基本属性;

   

package Dom解析;   
/**  
 * 设置对象的基本属性  
 * @author Administrator  
 *  
 */  
public class Student {   
    String name;   
    String sex;   
    String cla;   
       
    int no;   
    int num;   
  
}  

 

转换;

    

package Dom解析;

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;

/**
 * 添加元素到xml文档中去
 * doc.createElement添加元素
 * doc.createTextNode创建元素的内容
 * doc.createAttribute创建元素的属性
 * 
 * @author Administrator
 * 
 */
public class ADDelements {
	private static List<Student> liststu = new ArrayList<Student>();
	private static Student stu;

	public static void main(String[] args) throws Exception {

		String path = "C:\\Users\\Administrator\\Desktop\\xml\\student2.xml";
		// 实例化一个用来创建工厂对象的DOM解析器
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 创建解析器对象
		DocumentBuilder builder = factory.newDocumentBuilder();
		
		// 创建解析器需要解析的xml文档路径
		Document doc = builder.parse(path);
		
		/*
		 * 向xml文档中添加元素
		 */
//		NodeList nodelist1 = doc.getElementsByTagName("stu");
//		Node node11 = nodelist1.item(2);
//		Text  text1 = doc.createTextNode("男");
//		node11.appendChild(text1);
		
		//获得节点
		Node nodelast =doc.getLastChild();
		//添加标签
		Element e1 =doc.createElement("stu");
		nodelast.appendChild(e1);
		//添加元素的属性
		Attr atrr = doc.createAttribute("no");
	    atrr.setValue("12343");
		e1.setAttributeNode(atrr);
		
		//添加标签createElement
		Element e2 = doc.createElement("name");
		e1.appendChild(e2);
		//添加元素createTextNode
		Text text2 =doc.createTextNode("杨过");
		e2.appendChild(text2);
		
		//添加标签createElement
//		Element e4 = doc.createElement("sex");
//		e1.appendChild(e4);
//		Text text3=doc.createTextNode("男");
//		e4.appendChild(text3);	
		Element e6 = doc.createElement("sex");
		e6.setTextContent("女");
		e1.appendChild(e6);
		
		//添加标签createElement
		Element e5 = doc.createElement("cla");
		e1.appendChild(e5);
		Text text4=doc.createTextNode("古墓");
		e5.appendChild(text4);
		
		
	//将dom文档转化为xml文档
		//实例化转化xml的文档
		TransformerFactory transfactory = TransformerFactory.newInstance();
		//创建转化器		
		Transformer  transformer=transfactory.newTransformer();
		//获得需要添加元素的根节点的资源
		DOMSource xmlSource = new DOMSource(nodelast);
		//输出流
		String file = "C:\\Users\\Administrator\\Desktop\\xml\\student3.xml";
		StreamResult outputTarget = new StreamResult(new FileOutputStream(file));
		//开始转换
		transformer.transform(xmlSource, outputTarget);
		
		printxml(doc);

		for (Student stu : liststu) {
			System.out.println(stu.name + " " + stu.no + " " + stu.num + ""
					+ stu.sex + " " + stu.cla);
		}
	}

	
	
	/**
	 * 解析xml文档内容的方法
	 * @param node 传入的Document新的对象
	 */
	public static void printxml(Node node) {
		// 得到所有的子节点
		NodeList list = node.getChildNodes();
		// 遍历Nodelist中的子节点
		for (int i = 0; i < list.getLength(); i++) {
			Node node1 = list.item(i);
			// 获得节点的所有名称
			String str = node1.getNodeName();
			// System.out.println(str);

			// 判断node1是不是元素
			if (node1 instanceof Element) {
				if (str.equals("stu")) {
					stu = new Student();
					liststu.add(stu);
					// 获得元素标签的属性
					NamedNodeMap mnm = node1.getAttributes();
					for (int j = 0; j < mnm.getLength(); j++) {
						Node nodes = mnm.item(j);
						String name = nodes.getNodeName();
						String val = nodes.getNodeValue();

						if (name.equals("no")) {
							stu.no = Integer.parseInt(val);
						}
						if (name.equals("num")) {
							stu.num = Integer.parseInt(val);
						}
					}
				}
				// 都得到标签元素的内容
				if (str.equals("name")) {
					stu.name = node1.getTextContent();
				}
				if (str.equals("sex")) {
					stu.sex = node1.getTextContent();
				}
				if (str.equals("cla")) {
					stu.cla = node1.getTextContent();
				}
			}
			printxml(node1);
		}

	}

}

 

DOM解析与添加只能对少量数据进行操作,并且代码的步骤都是固定的;

  • 大小: 8.3 KB
  • 大小: 5.2 KB
  • 大小: 15.5 KB
1
0
分享到:
评论

相关推荐

    DOM解析XML文件例子

    总结来说,DOM解析XML文件是一种常见的数据处理技术,通过构建内存中的DOM树,能够方便地对XML文档进行查询、修改和操作。在JavaScript中,DOMParser是实现这一功能的关键工具。理解DOM解析的基本原理和方法,将有助...

    DOM解析XML 创建XML

    DOM解析XML和创建XML是Web开发中的基础技能,尤其在处理动态数据和接口交互时,理解并掌握DOM与XML的结合应用至关重要。在实际项目中,我们可能还需要结合其他技术,如XSLT(用于转换XML)和XPath(用于在XML文档中...

    java_dom解析xml xml java

    标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...

    XML解析技术DOM4J解析

    ### XML解析技术DOM4J解析 #### DOM4J解析概览 DOM4J是一种高性能、功能强大且极其易于使用的Java XML API,它最初是作为JDOM的一个智能分支发展起来的,自2000年下半年开始持续开发。DOM4J不仅在功能上超越了基本...

    DOM解析网络编程

    在实际应用中,DOM解析通常与网络编程结合,处理从服务器获取的HTML或XML数据。例如,AJAX(Asynchronous JavaScript and XML)技术就常用于异步加载和更新页面内容,而这些内容往往需要通过DOM解析来处理。...

    基于Jscript脚本技术的SVG文档的DOM解析

    ### 基于Jscript脚本技术的SVG文档的DOM解析 #### 摘要与背景 本文主要探讨了SVG(可缩放矢量图形)文档的DOM(文档对象模型)编程接口,并提出了一种利用Jscript脚本技术和中间层“数据池”对SVG文档进行DOM解析...

    DOM解析XML文档

    总之,DOM解析XML文档是编程中常用的技术,它提供了一种强大且灵活的方式来处理XML数据。理解和掌握DOM解析,对于任何涉及XML操作的开发工作都至关重要。通过熟练运用DOM,我们可以高效地构建和操纵XML文档,实现...

    dom解析xml BS结构

    "dom解析xml BS结构"这一主题,意味着我们将探讨如何在基于浏览器的客户端应用(Browser-Server,BS结构)中利用DOM解析XML数据。BS架构中,通常由前端浏览器接收服务器传递的XML数据,并通过JavaScript进行解析和...

    xml的Dom解析

    XML(eXtensible Markup Language)是一种...总之,DOM解析是XML处理的核心技术之一,通过DOM,开发者可以灵活地操作XML文档,实现数据的读取、修改和转换。了解并掌握DOM解析,对于从事涉及XML处理的IT工作至关重要。

    (java)DOM解析XML文件并实现通讯录

    `javaSwing`可能是实现这一界面的源代码文件,它允许用户添加、编辑和删除联系人,同时通过DOM解析器与XML文件进行交互。在Swing中,可以使用`JFrame`作为主窗口,`JTable`展示联系人列表,`JOptionPane`进行用户...

    DOM4j\pull\dom解析XML文件

    **DOM解析技术** DOM解析器将XML文档转换为一棵树形结构,每个节点代表XML文档的一个部分,如元素、属性、文本等。这种解析方式允许开发者方便地遍历整个文档树,查找、添加或修改元素。然而,DOM解析器需要在内存中...

    java dom4j解析xml

    DOM解析会一次性加载整个XML文档到内存,适合小规模的XML;SAX解析则采用事件驱动,逐行读取,适合处理大规模的XML文件。 - 解析XML的基本步骤:创建解析器工厂,通过工厂创建解析器,解析器读取XML文件并生成...

    android的DOM解析

    在这个场景中,我们看到的是一个关于如何使用DOM解析技术来处理新闻数据的例子。 首先,我们要理解XML文档的结构。XML是一种标记语言,用于存储数据,其结构清晰,易于人和机器阅读。新闻数据通常包含标题、日期、...

    Dom解析之基础

    DOM解析是Web开发中的重要技术,主要用于读取、修改、添加或删除HTML和XML文档的元素。本篇文章主要探讨DOM解析的基础知识,包括一层解析和二层解析的概念。 **一层解析:** 一层解析,通常指的是获取文档的基本...

    android版本更新与dom解析xml

    本节将深入探讨Android版本更新的过程以及DOM解析XML的技术。 一、Android版本更新 1. 版本跟进:Android系统经历了从早期的API Level 1到目前的API Level 30等多个版本。每个新版本通常包含对性能、安全性和用户...

    DOM解析XML

    DOM解析器将整个XML文档加载到内存中,构建一个树形结构,允许开发者通过节点操作来访问和修改XML内容。以下是对DOM解析XML的详细阐述: 1. **DOM模型**:DOM是一种标准,由W3C组织制定,它将XML文档视为一系列可以...

    DOM.rar_DOM_HTML dom_dom树解析

    学习DOM解析和操作对于Web开发人员来说非常重要,它能够帮助开发者更好地理解页面结构,实现动态效果,提高用户体验。理解DOM的工作原理,熟悉各种DOM方法和属性,可以有效提升开发效率,使得对网页内容的控制更为...

    dom4j解析 递归

    **DOM4J解析递归详解** DOM4J是Java中一个强大的XML处理库,它提供了丰富的API用于XML的解析、创建、操作以及遍历。在处理复杂的XML文档时,经常需要用到递归方法来深入到XML的各个层级进行访问。本文将深入探讨DOM...

Global site tag (gtag.js) - Google Analytics