`
saluya
  • 浏览: 120667 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

dom增删改查xml文件

 
阅读更多

 

public class DOMForXml {
		/**
		 * 获得doc对象
		 */
		public Document getDocument(String fileName) {
			Document document = null;
			try {
				DocumentBuilderFactory factory = DocumentBuilderFactory
						.newInstance();
				DocumentBuilder builder = factory.newDocumentBuilder();
				document = builder.parse(new File(fileName));

			} catch (Exception e) {
				e.printStackTrace();
			}

			return document;
		}

		/**
		 * 将改动持久到文件
		 */
		public void modifyFile(Document doc, String distFileName) {
			try {
				TransformerFactory tf = TransformerFactory.newInstance();
				Transformer tfer = tf.newTransformer();
				DOMSource dsource = new DOMSource(doc);
				StreamResult sr = new StreamResult(new File("student.xml"));
				tfer.transform(dsource, sr);
			} catch (Exception e) {
				e.printStackTrace();
			}
		}

		/**
		 * 解析
		 */
		public void paseXml(String fileName) {
			Document document = getDocument(fileName);
			NodeList nodeList = document.getElementsByTagName("student");
			for (int i = 0; i < nodeList.getLength(); i++) {
				StringBuilder sb = new StringBuilder();
				sb.append("姓名:"
						+ document.getElementsByTagName("name").item(i)
								.getFirstChild().getNodeValue());
				sb.append(" , ");
				sb.append("年龄:"
						+ document.getElementsByTagName("age").item(i)
								.getFirstChild().getNodeValue());
				sb.append(" , ");
				sb.append("性别:"
						+ document.getElementsByTagName("sex").item(i)
								.getFirstChild().getNodeValue());
				sb.append(" , ");
				sb.append("地址:"
						+ document.getElementsByTagName("address").item(i)
								.getFirstChild().getNodeValue());
				System.out.println(sb.toString());
			}
		}

		/**
		 * 创建一个新的学生
		 */
		public void addNewNode(String name, String age, String sex,
				String address) {
			try {
				Document document = getDocument("student.xml");
				NodeList nodeList = document.getElementsByTagName("students");
				// 创建新的节点
				Node studentNode = document.createElement("student");
				Node nameNode = document.createElement("name");
				nameNode.appendChild(document.createTextNode(name));
				Node ageNode = document.createElement("age");
				ageNode.appendChild(document.createTextNode(age));
				Node sexNode = document.createElement("sex");
				sexNode.appendChild(document.createTextNode(sex));
				Node addressNode = document.createElement("address");
				addressNode.appendChild(document.createTextNode(address));
				// 添加节点
				studentNode.appendChild(nameNode);
				studentNode.appendChild(ageNode);
				studentNode.appendChild(sexNode);
				studentNode.appendChild(addressNode);
				nodeList.item(0).appendChild(studentNode);
				// 此时真正的处理将新数据添加到文件中(磁盘)
				TransformerFactory tf = TransformerFactory.newInstance();
				Transformer tfer = tf.newTransformer();
				DOMSource dsource = new DOMSource(document);
				StreamResult sr = new StreamResult(new File("student.xml"));
				tfer.transform(dsource, sr);
			} catch (Exception e) {
				e.printStackTrace();
			}

			paseXml("student.xml");
		}

		/**
		 * 删除一个节点
		 */
		public void deleteNode(String name) {
			Document document = getDocument("student.xml");

			NodeList nodeList = document.getElementsByTagName("name");
			for (int i = 0; i < nodeList.getLength(); i++) {
				String value = nodeList.item(i).getFirstChild()
						.getTextContent();
				if (name != null && name.equalsIgnoreCase(value)) {
					Node parentNode = nodeList.item(i).getParentNode();
					document.getFirstChild().removeChild(parentNode);
				}
			}
			modifyFile(document, "student.xml");
		}

		/**
		 * 根据name修改某个节点的内容
		 */
		public void updateNode(String name) {
			Document document = getDocument("student.xml");
			NodeList nodeList = document.getElementsByTagName("name");
			for (int i = 0; i < nodeList.getLength(); i++) {
				String value = nodeList.item(i).getFirstChild()
						.getTextContent();
				if (name != null && name.equalsIgnoreCase(value)) {
					Node parentNode = nodeList.item(i).getParentNode();
					NodeList nl = parentNode.getChildNodes();
					for (int j = 0; j < nl.getLength(); j++) {
						String modifyNode = nl.item(j).getNodeName();
						if (modifyNode.equalsIgnoreCase("age")) {
							nl.item(j).getFirstChild().setTextContent("25");
						}
					}
				}
			}
			modifyFile(document, "student.xml");
		}
	}
 
<?xml version="1.0" encoding="UTF-8" ?>  
 <students>  
    <student>  
        <name>TigerLee</name>  
        <age>26</age>  
        <sex>男</sex>  
        <address>北京海淀</address>  
    </student>  
    <student>  
        <name>Snow</name>  
        <age>24</age>  
        <sex>女</sex>  
        <address>山东</address>  
    </student>  
</students>
 

 

分享到:
评论

相关推荐

    dom4j解析xml文件(增删改查)

    在“dom4j解析xml文件(增删改查)”这个主题中,我们将深入探讨如何使用DOM4J来实现XML文档的四种基本操作:增加元素、删除元素、更新元素内容以及查询元素。 首先,让我们了解DOM4J的基本用法。在解析XML文件时,...

    QT_DOM方式操作xml文件增删改查.rar

    QT_DOM方式操作xml文件增删改查 博文参考: https://txwtech.blog.csdn.net/article/details/126321336?spm=1001.2014.3001.5502

    Xml完全操作 XML增删改查

    至于文件名称“ParseXML”,这可能是一个示例代码文件,用于演示如何在编程环境中解析XML文档。常见的解析库包括Python的ElementTree,JavaScript的DOM API,以及.NET Framework的System.Xml命名空间等。 总之,XML...

    XML课程设计实现增删改查

    在本"XML课程设计实现增删改查"项目中,我们聚焦于如何使用XML进行数据存储,并通过Java编程实现对这些数据的CRUD(创建Create、读取Read、更新Update、删除Delete)操作。 XML的基本结构包括元素(Element)、属性...

    增删改查xml数据

    在实际应用中,XML的增删改查操作可能会结合DOM(Document Object Model)、SAX(Simple API for XML)或XPath(XML Path Language)等技术进行,以提高性能或实现更复杂的查询。同时,对于大型XML文件,可能需要...

    dom4j操作xml的增删改查

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而灵活的方式来解析、创建、修改和查询XML文档,是Java开发中的一个常用...通过实践这些基本操作,开发者可以轻松地在自己的项目中实现XML的增删改查功能。

    Qt操作XML文档(增删改查)

    本篇文章将深入探讨如何在Qt环境下进行XML文档的操作,包括增、删、改、查等常见功能。 首先,Qt中的`QDomDocument`类是用于解析和操作XML文档的核心类。它基于DOM(Document Object Model)模型,允许开发者以树形...

    XML增删改查源码实现

    本资源提供了XML的增删改查功能的源代码实现,帮助学习者快速掌握如何在实际项目中操作XML文档。下面将详细解释XML的基本概念以及如何实现增删改查功能。 XML的结构: XML文档由元素、属性、文本内容、注释等构成。...

    XML 基于JAVA DOM 增删改查

    以下是对"XML基于JAVA DOM 增删改查"这一主题的详细解释。 首先,我们需要理解DOM解析的基本概念。DOM解析器将XML文档转化为一个对象模型,每个元素、属性、文本等都被表示为一个对象,这些对象构成了一个层级结构...

    java DOM解析xml操作大全,增删改查

    在这个"java DOM解析xml操作大全,增删改查"的主题中,我们将深入探讨如何使用DOM解析XML,以及如何结合三层架构(表示层、业务逻辑层、数据访问层)来实现这些操作。 首先,DOM解析的核心是`javax.xml.parsers....

    xml增删改查

    ### XML增删改查操作 #### 增加 在XML中添加新元素通常涉及以下步骤: 1. 加载XML文档到DOM对象。 2. 创建新元素并设置其属性。 3. 将新元素插入到适当位置。 4. 保存更改后的XML文档。 例如,使用PHP的DOM...

    Asp+xml 实现增删改查

    【Asp+xml 实现增删改查】是一个关于使用ASP技术对XML文件进行基本操作的教程。在Web开发中,XML(eXtensible Markup Language)常被用作数据存储和交换格式,因为它具有结构清晰、易于解析和跨平台的特点。ASP...

    JAVA 操作 XML 增删改查

    首先,从"JAVA 操作 XML 增删改查"这个标题来看,我们可以预知内容将涵盖XML文件的基本操作。这些操作通常包括创建XML文件、读取XML内容、修改XML元素以及删除XML节点。在JAVA中,主要使用DOM(Document Object ...

    使用XML进行增删改查技术编程Java源代码

    本教程将深入探讨如何使用XML进行增删改查的操作,并提供相应的Java源代码示例。 首先,我们需要理解XML的基本结构。XML文档由元素构成,元素通过标签来定义,如`&lt;element&gt;`...`&lt;/element&gt;`。属性是附加在元素上的...

    java xml增删改查多种方法

    本篇文章将详细探讨Java对XML文档进行增删改查的多种方法。 1. **解析XML文档** 在Java中,解析XML主要有DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)三种方式。 ...

    java大作业,实现学生信息增删改查

    编写Web应用程序(JavaEE平台上的应用,能够运行在Tomcat服务器上),实现学生信息的增删改查。 在Web页面上实现添加一个学生记录,删除某个学生记录,修改某个学生记录,和按照姓名,学号进行查询。 要求列表输出...

    对XML进行增删改查例子

    在这个“对XML进行增删改查例子”中,我们将探讨如何操作XML文档,包括添加新节点、删除已有节点、修改现有节点内容以及查询XML结构中的特定信息。 1. **XML的基本结构** XML文档由一系列元素组成,每个元素都有一...

    winform对xmL的增删改查

    本示例中,"winform对xmL的增删改查"实现了在WinForm应用程序中对XML文件的操作,包括添加数据、删除数据、修改数据以及查询数据。以下是关于这些操作的详细解释: 1. **XML文件的读取**: - 使用`System.Xml`命名...

    java实现对xml文件的增 删 改 查 操作

    要实现对XML文件的增、删、改、查操作,我们需要使用Java的标准库JAXB(Java Architecture for XML Binding)或者DOM(Document Object Model)、SAX(Simple API for XML)等解析器。下面将详细介绍这些操作的具体...

    Qt5 XML文件的解析,增删改查节点。

    在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用在各种软件和网络服务中。...只要理解了DOM模型的基本概念,就能轻松掌握Qt5中XML文件的增删改查操作。

Global site tag (gtag.js) - Google Analytics