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

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
分享到:
评论

相关推荐

    XML+DOM+解析和生成+教程

    XML+DOM+解析和生成+教程 - 本资源是一个XML的教程,教你如何用Java的DOM技术解析和生成XML文档,包括创建和遍历节点,修改和删除属性,添加和删除元素等。

    Java中四种XML解析技术

    DOM 解析器把 XML 文档转化为一个包含其内容的树,并可以对树进行遍历。用 DOM 解析模型的优点是编程容易,开发人员只需要调用建树的指令,然后利用navigation APIs访问所需的树节点来完成任务。可以很容易的添加和...

    基于DOM的XML解析技术在构件描述中的应用

    利用DOM 对象, 开发人员可以对文档进行读取、搜索、修改、添加和删除。  微软的开发平台ASP. NET 允许开发人员在源码中插入XML 注释, 所有的XML 注释都在3 个向前的斜线之后( / / / ) , C# 解析器可以把代码中...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part1.rar

     1.3.7 作用域解析和闭包   1.3.8 迭代对象   1.3.9 函数的调用和引用(不带括号)   1.4 实例:WYSIWYGJavaScript翻转图   1.5 小结   第2章 创建可重用的对象   2.1 对象中包含什么   2.1.1...

    JAVA解析XML示例

    这是用三中不同的方法读取XML文件的信息,做了一些小的比较,主要体现在三种解析技术的性能上。。。适合于初学者 里面卖弄包含一个dom4j解析的JAR包,将该JAR文件添加进来即可.

    基于phpdom的词典

    基于phpdom技术,实现对xml文件的解析,利用xml文件实现字典功能,同时可以向词库添加和删除词条。使用MFC结构编写,适用于phpdom初学者。

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part3.rar

     1.3.7 作用域解析和闭包   1.3.8 迭代对象   1.3.9 函数的调用和引用(不带括号)   1.4 实例:WYSIWYGJavaScript翻转图   1.5 小结   第2章 创建可重用的对象   2.1 对象中包含什么   2.1.1...

    [JavaScript.DOM高级程序设计](加)桑贝斯.扫描版.part2.rar

     1.3.7 作用域解析和闭包   1.3.8 迭代对象   1.3.9 函数的调用和引用(不带括号)   1.4 实例:WYSIWYGJavaScript翻转图   1.5 小结   第2章 创建可重用的对象   2.1 对象中包含什么   2.1.1...

    Java网络阅读器,基于XML技术实现的RSS定阅客户端.rar

     编写时涉及到的技术要点:异常处理、Swing图形界面、多线程、本地IO操作、网络编程、XMLDOM操作。  需要改进的地方:UI进阶:HTML解析查看摘要、菜单功能完善。本地化数据。(支持离线浏览)。

    课程设计 论文管理系统

    2. XML解析技术:DOM或SAX或成熟的XML解析库。 3. 无状态SessionBean、MessageBean或web 服务 。 4. 包含以下设计模式中的四种:工厂、单例、合成、装饰器、适配器、责任链、对象缓存器、观察者,或自己提炼一种设计...

    SQLServer2000高级编程技术-已添加书签,想学存储过程、SQL编程务必要看,分析非常透彻

    12.2.5 XML解析器和DOM 12.2.6 XML中的链接和查询 12.2.7 转换XML 12.3 为何使用XML 12.3.1 用于单位之间的信息交换 12.3.2 信息发布 12.4 SQL Server中的XML支持 12.4.1 Transact-SQL语言扩展 12.4.2 OPENXM 12.4.3...

    《javaScrip开发技术大全》源代码

    • sample01.htm 将JavaScript代码插入在标签与标签之间 • sample02.htm 将JavaScript代码放在了标签与标签之间 • sample03.htm JavaScript与HTML混合执行 • sample04.htm 在同...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    3.2.4 用dom解析xml文档实例 53 3.3 使用sax解析xml文档 65 3.3.1 sax的处理机制 66 3.3.2 配置sax解析器 69 3.3.3 sax解析器工厂 70 3.3.4 sax的异常类 71 3.3.5 errorhandler接口 73 3.3.6 使用sax解析xml...

    大数据培训课程安排.pdf

    从 后期课程层来说,因为我们重点是⼤数据,但前期需要锻炼编程技术与思维。经 过我们多年开发和授课的项⽬经理分析,满⾜这两点,⽬前市场上最好理解和掌 握的技术是J2EE,但J2EE⼜离不开页⾯技术。所以第⼀阶段...

Global site tag (gtag.js) - Google Analytics