`
xglla_1129
  • 浏览: 10616 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Dom对XML的增删改查

阅读更多

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文件增删改查.rar

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

    Xml完全操作 XML增删改查

    在Java中,我们可以使用DOM(Document Object Model)解析器将整个XML文档加载到内存中的树形结构中,便于遍历和操作。另一种解析方式是SAX(Simple API for XML),它采用事件驱动模型,逐行处理XML,节省内存但不...

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

    在提供的视频资源"17-dom4j解析xml文档(增删改查).avi"中,可能详细展示了这些操作的步骤和示例,观看该视频将进一步加深你对DOM4J操作XML的理解。记得实践是检验理论的最好方式,动手操作会让你更好地掌握这些知识...

    JAVA 操作 XML 增删改查

    3. DOM4J库:DOM4J是基于DOM的Java库,提供了一种更简洁的方式来操作XML,包括增删改查。例如,使用`Element`类的`addAttribute`、`removeAttribute`、`getText()`、`setText()`方法进行操作。 从"源码 工具"标签,...

    XML增删改查源码实现

    XML(eXtensible Markup Language)是一...总之,XML增删改查是XML编程中的基础操作,对于任何涉及XML处理的开发工作都是至关重要的。通过深入理解和实践提供的源码,你将能有效地管理XML文档,从而提升你的编程技能。

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

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

    dom4j操作xml的增删改查

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

    winform对xmL的增删改查

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

    xml增删改查

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

    java xml增删改查多种方法

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

    XML课程设计实现增删改查

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

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

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

    XML增删改查操作实例

    在处理XML文件时,通常会涉及到对XML文档的四种基本操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete),简称CRUD。 首先,我们来讨论如何进行XML的创建操作。创建XML文件主要包括定义元素、属性...

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

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

    对XML进行增删改查例子

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

    对XML进行增删改查

    本篇将主要探讨如何对XML进行增删改查操作,我们将通过一个名为`XMLUtil.java`的Java工具类来实现这些功能。 首先,我们需要理解XML的基本结构。XML文档由元素(Element)、属性(Attribute)、文本内容(Text ...

    XML的增删改查(升级版)

    本文将深入探讨如何使用Java进行XML的增删改查操作,旨在提供一个升级版的处理策略。 首先,理解XML的基本结构至关重要。XML文档由元素(Element)、属性(Attribute)、文本内容(Text Content)等组成。每个元素...

    使用dom4j对xml的解析,对xml的增删改查

    该文件是一页完整代码,它是使用dom4j对xml的解析,对xml的增删改差

    增删改查xml数据

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

    Asp+xml 实现增删改查

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

Global site tag (gtag.js) - Google Analytics