magicalXML
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
public class magicalXML {
public static void main(String[] args) throws ParserConfigurationException {
magicalXML u = new magicalXML();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
try {
//读取源文件,如果不存在就创建一个新的给它
File f = new File("magical123.xml");
Document d = db.parse(f);
TransformerFactory tfFac = TransformerFactory.newInstance();
Transformer tf = tfFac.newTransformer();
tf.setOutputProperty("encoding","GB2312");
StreamResult result = new StreamResult(System.out);
DOMSource source = new DOMSource(d);
System.out.println("修改前的XML:");
tf.transform(source, result);
System.out.println();
/*
//打印元素名称和文本值
u.read(d);
*/
/*
//为书名为"java basic"的作者增加属性sex
u.add(d, "java basic", "sex", "man");
*/
/*
//修改书名为"java basic"的作者为"magicalboy"
u.update(d, "java basic", "magicalboy");
*/
/*
//删除书名为"java basic"的作者元素
u.delete(d, "java basic");
*/
System.out.println("修改后的XML:");
tf.setOutputProperty("encoding","GB2312");
tf.transform(source, result);
//保存修改后的xml文件
tf.transform(source, new StreamResult(new File(
"magical123.xml")));
} catch (SAXException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
//创建xml
Document dl = db.newDocument();
u.create(dl);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
//创建方法
public void create(Document d) {
Element pub = d.createElement("publication");
Element book = d.createElement("book");
Element title = d.createElement("Title");
Element author = d.createElement("Author");
title.appendChild(d.createTextNode("java basic"));
author.appendChild(d.createTextNode("john"));
book.appendChild(title);
book.appendChild(author);
pub.appendChild(book);
book = d.createElement("book");
title = d.createElement("Title");
author = d.createElement("Author");
title.appendChild(d.createTextNode("magicalbook"));
author.appendChild(d.createTextNode("枫叶"));
book.appendChild(title);
book.appendChild(author);
pub.appendChild(book);
//增加到根节点
d.appendChild(pub);
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer f = tf.newTransformer();
f.setOutputProperty("encoding","GB2312");
System.out.println("正在创建新的xml...");
f.transform(new DOMSource(d), new StreamResult(new File(
"magical123.xml")));
System.out.println("创建新的xml成功!新的xml如下:");
f.transform(new DOMSource(d),new StreamResult(System.out));
}
catch (Exception e) {
e.printStackTrace();
}
}
//读取元素名称和文本值方法
public void read(Document d) {
NodeList nl = d.getElementsByTagName("*"); // 取所有结点
for (int i = 0; i < nl.getLength(); i++) {
if (nl.item(i).getFirstChild().getNodeType() == Node.ELEMENT_NODE)
System.out.println("元素名称:"+nl.item(i).getNodeName());
else {
System.out.println("元素名称:"+nl.item(i).getNodeName());
System.out.println("文本值:"+nl.item(i).getTextContent());
}
}
}
//元素增加属性方法
public void add(Document d, String title, String attr, String value) {
NodeList nl = d.getElementsByTagName("Title");
Element el = d.getDocumentElement();
Node n;
Element author;
String str;
for(int i=0; i<nl.getLength(); i++) {
n = nl.item(i);
author = (Element)n.getNextSibling().getNextSibling();
if(title.equals(n.getFirstChild().getNodeValue())) {
System.out.println("为元素"+author.getNodeName()+"增加"+attr+"属性:"+value);
author.setAttribute(attr, value);
}
}
}
//修改方法
public void update(Document doc, String title, String author) {
NodeList nl = doc.getElementsByTagName("Title");
String strNode;
Element e;
// Node n;
System.out.println("有"+nl.getLength()+"个book节点");
try {
for(int i = 0; i < nl.getLength(); i++) {
e = (Element) nl.item(i);
// n = nl.item(i);
strNode = e.getFirstChild().getNodeValue();
// System.out.println(strNode);
// strNode = n.getFirstChild().getNodeValue();
// System.out.println(strNode);
if (title.equals(strNode)) {
Element Eauthor = (Element) e.getNextSibling().getNextSibling();
System.out.println("修改前的Author:"+Eauthor.getFirstChild().getNodeValue());
Eauthor.getFirstChild().setNodeValue(author);
System.out.println("修改后的Author:"+Eauthor.getFirstChild().getNodeValue());
}
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
//删除方法
public void delete(Document doc,String title) {
NodeList nl = doc.getElementsByTagName("Title");
Element e = doc.getDocumentElement();
Node n;
String strNode;
//System.out.println("\n有"+nl.getLength()+"个Title节点");
try {
for(int i=0; i<nl.getLength(); i++) {
n = nl.item(i).getFirstChild();
strNode = n.getNodeValue();
// System.out.println(e.getNodeName());
// System.out.println(e.getFirstChild().getNextSibling().getNodeName());
// System.out.println(nl.item(i).getNodeName());
// System.out.println(strNode);
if(("java basic").equals(strNode)) {
System.out.println("\n准备要删除的书名为"+title+"的作者是:"+nl.item(i).getNextSibling().getNextSibling().getFirstChild().getNodeValue());
e.getFirstChild().getNextSibling().removeChild(nl.item(i).getNextSibling().getNextSibling());
System.out.println("删除成功!");
}
}
} catch (Exception ee) {
ee.printStackTrace();
}
}
}
magical123.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<publication>
<book>
<Title>java basic</Title>
<Author>john</Author>
</book>
<book>
<Title>magicalbook</Title>
<Author>magicalboy</Author>
</book>
</publication>
分享到:
相关推荐
QT_DOM方式操作xml文件增删改查 博文参考: https://txwtech.blog.csdn.net/article/details/126321336?spm=1001.2014.3001.5502
在Java中,我们可以使用DOM(Document Object Model)解析器将整个XML文档加载到内存中的树形结构中,便于遍历和操作。另一种解析方式是SAX(Simple API for XML),它采用事件驱动模型,逐行处理XML,节省内存但不...
在提供的视频资源"17-dom4j解析xml文档(增删改查).avi"中,可能详细展示了这些操作的步骤和示例,观看该视频将进一步加深你对DOM4J操作XML的理解。记得实践是检验理论的最好方式,动手操作会让你更好地掌握这些知识...
3. DOM4J库:DOM4J是基于DOM的Java库,提供了一种更简洁的方式来操作XML,包括增删改查。例如,使用`Element`类的`addAttribute`、`removeAttribute`、`getText()`、`setText()`方法进行操作。 从"源码 工具"标签,...
XML(eXtensible Markup Language)是一...总之,XML增删改查是XML编程中的基础操作,对于任何涉及XML处理的开发工作都是至关重要的。通过深入理解和实践提供的源码,你将能有效地管理XML文档,从而提升你的编程技能。
在这个"java DOM解析xml操作大全,增删改查"的主题中,我们将深入探讨如何使用DOM解析XML,以及如何结合三层架构(表示层、业务逻辑层、数据访问层)来实现这些操作。 首先,DOM解析的核心是`javax.xml.parsers....
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而灵活的方式来解析、创建、修改和查询XML文档,是Java开发中的一个常用...通过实践这些基本操作,开发者可以轻松地在自己的项目中实现XML的增删改查功能。
本示例中,"winform对xmL的增删改查"实现了在WinForm应用程序中对XML文件的操作,包括添加数据、删除数据、修改数据以及查询数据。以下是关于这些操作的详细解释: 1. **XML文件的读取**: - 使用`System.Xml`命名...
### XML增删改查操作 #### 增加 在XML中添加新元素通常涉及以下步骤: 1. 加载XML文档到DOM对象。 2. 创建新元素并设置其属性。 3. 将新元素插入到适当位置。 4. 保存更改后的XML文档。 例如,使用PHP的DOM...
本篇文章将详细探讨Java对XML文档进行增删改查的多种方法。 1. **解析XML文档** 在Java中,解析XML主要有DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)三种方式。 ...
在本"XML课程设计实现增删改查"项目中,我们聚焦于如何使用XML进行数据存储,并通过Java编程实现对这些数据的CRUD(创建Create、读取Read、更新Update、删除Delete)操作。 XML的基本结构包括元素(Element)、属性...
本篇文章将深入探讨如何在Qt环境下进行XML文档的操作,包括增、删、改、查等常见功能。 首先,Qt中的`QDomDocument`类是用于解析和操作XML文档的核心类。它基于DOM(Document Object Model)模型,允许开发者以树形...
在处理XML文件时,通常会涉及到对XML文档的四种基本操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete),简称CRUD。 首先,我们来讨论如何进行XML的创建操作。创建XML文件主要包括定义元素、属性...
本教程将深入探讨如何使用XML进行增删改查的操作,并提供相应的Java源代码示例。 首先,我们需要理解XML的基本结构。XML文档由元素构成,元素通过标签来定义,如`<element>`...`</element>`。属性是附加在元素上的...
在这个“对XML进行增删改查例子”中,我们将探讨如何操作XML文档,包括添加新节点、删除已有节点、修改现有节点内容以及查询XML结构中的特定信息。 1. **XML的基本结构** XML文档由一系列元素组成,每个元素都有一...
本篇将主要探讨如何对XML进行增删改查操作,我们将通过一个名为`XMLUtil.java`的Java工具类来实现这些功能。 首先,我们需要理解XML的基本结构。XML文档由元素(Element)、属性(Attribute)、文本内容(Text ...
本文将深入探讨如何使用Java进行XML的增删改查操作,旨在提供一个升级版的处理策略。 首先,理解XML的基本结构至关重要。XML文档由元素(Element)、属性(Attribute)、文本内容(Text Content)等组成。每个元素...
该文件是一页完整代码,它是使用dom4j对xml的解析,对xml的增删改差
在实际应用中,XML的增删改查操作可能会结合DOM(Document Object Model)、SAX(Simple API for XML)或XPath(XML Path Language)等技术进行,以提高性能或实现更复杂的查询。同时,对于大型XML文件,可能需要...
【Asp+xml 实现增删改查】是一个关于使用ASP技术对XML文件进行基本操作的教程。在Web开发中,XML(eXtensible Markup Language)常被用作数据存储和交换格式,因为它具有结构清晰、易于解析和跨平台的特点。ASP...