`
lvwenwen
  • 浏览: 953782 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

java操作DOM节点的添加,删除,修改

阅读更多
java操作DOM节点的添加,删除,修改

下面我们开始对此xml添加,删除,修改:方法一
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
public class DOMConvert
{
    public static void main(String[] args)
    {
        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
        try
        {
            DocumentBuilder db=dbf.newDocumentBuilder();
            Document doc=db.parse("students.xml");
           
            //------------------添加节点------------------
            //创建表示一个学生信息的各元素节点
            Element eltStu=doc.createElement("student");
            Element eltName=doc.createElement("name");
            Element eltAge=doc.createElement("age");
           
            //创建<student>元素的sn属性节点
            Attr attr=doc.createAttribute("sn");
            attr.setValue("03");
           
            //创建代表学生信息的文本节点
            Text txtName=doc.createTextNode("王五");
            Text txtAge=doc.createTextNode("19");
          
            //将文本节点添加为对应的元素节点的子节点
            eltName.appendChild(txtName);
            eltAge.appendChild(txtAge);
           
            //将name和age节点添加为student节点的子节点
            eltStu.appendChild(eltName);
            eltStu.appendChild(eltAge);
           
            //为<student>元素添加sn属性节点
            eltStu.setAttributeNode(attr);
           
            //得到XML文档的根元素。
            Element eltRoot=doc.getDocumentElement();
           
            //将student节点添加为根元素的子节点
            eltRoot.appendChild(eltStu);
           
            NodeList nl=doc.getElementsByTagName("student");
           
            //------------------删除节点------------------
            Node nodeDel=nl.item(0);
            nodeDel.getParentNode().removeChild(nodeDel);
           
            //------------------修改节点------------------
            //注意:NodeList对象是动态的,所以前面删除节点的操作会影响到NodeList对象,
            //NodeList中的节点对象会重新进行排列,此时,索引为0的节点是先前节点
            //列表中索引为1的节点。
            Element eltChg=(Element)nl.item(0);
            Node nodeAgeChg=eltChg.getElementsByTagName("age").item(0);
            nodeAgeChg.getFirstChild().setNodeValue("22");
           
           
            //输出修改后的学生信息。
            for(int i=0;i<nl.getLength();i++)
            {
                Element elt=(Element)nl.item(i);
                System.out.println("编号:"+elt.getAttribute("sn"));
               
                Node nodeName=elt.getElementsByTagName("name").item(0);
                Node nodeAge=elt.getElementsByTagName("age").item(0);
               
                String name=nodeName.getFirstChild().getNodeValue();
                String age=nodeAge.getFirstChild().getNodeValue();
               
                System.out.print("姓名:");
                System.out.println(name);
               
                System.out.print("年龄:");
                System.out.println(age);
                System.out.println("------------------------------------------");
            }
        }
        catch(ParserConfigurationException e){e.printStackTrace();}
        catch(SAXException e){e.printStackTrace();}
        catch(IOException e){e.printStackTrace();}
    }
}
方法二:使用XSL转换实现
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
public class DOMConvert2
{
    public static void main(String[] args)
    {
        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
        try
        {
            DocumentBuilder db=dbf.newDocumentBuilder();
            Document doc=db.parse("students.xml");
           
            Element eltStu=doc.createElement("student");
            Element eltName=doc.createElement("name");
            Element eltAge=doc.createElement("age");
           
            Attr attr=doc.createAttribute("sn");
            attr.setValue("03");
           
            Text txtName=doc.createTextNode("王五");
            Text txtAge=doc.createTextNode("19");
          
            eltName.appendChild(txtName);
            eltAge.appendChild(txtAge);
           
            eltStu.appendChild(eltName);
            eltStu.appendChild(eltAge);
           
            eltStu.setAttributeNode(attr);
           
            Element eltRoot=doc.getDocumentElement();
           
            eltRoot.appendChild(eltStu);
           
            NodeList nl=doc.getElementsByTagName("student");
           
            Node nodeDel=(Element)nl.item(0);
            nodeDel.getParentNode().removeChild(nodeDel);
           
            Element eltChg=(Element)nl.item(0);
            Node nodeAgeChg=eltChg.getElementsByTagName("age").item(0);
            nodeAgeChg.getFirstChild().setNodeValue("22");
           
            //利用文档节点创建一个DOM输入源
            DOMSource source=new DOMSource(doc);
            //以converted.xml文件构造一个StreamResult对象,用于保存转换后结果。
            StreamResult result=new StreamResult(new File("converted.xml"));
           
            //得到转换器工厂类的实例
            TransformerFactory tff = TransformerFactory.newInstance();
            //创建一个新的转换器,用于执行恒等转换,
            //即直接将DOM输入源的内容复制到结果文档中。
            Transformer tf = tff.newTransformer();
            //执行转换
            tf.transform(source, result);
        }
        catch(ParserConfigurationException e){e.printStackTrace();}
        catch(SAXException e){e.printStackTrace();}
        catch(IOException e){e.printStackTrace();}
        catch(TransformerConfigurationException e){e.printStackTrace();}
        catch(TransformerException e){e.printStackTrace();}
    }
}
//students.xml
<?xml version="1.0" encoding="GB2312"?>
<?xml-stylesheet type="text/xsl" href="students.xsl" target="_blank" rel="nofollow">
<students>
    <student sn="01">
        <name>张三</name>
        <age>18</age>
    </student>
   
    <student sn="02">
        <name>李四</name>
        <age>20</age>
    </student>
</students>
分享到:
评论

相关推荐

    java dom 操作xml

    Java DOM(Document Object Model)是Java处理XML文档的一种标准方式,它将XML文档解析成一个树形结构,每个XML元素、属性和文本内容都对应树中的一个节点。DOM提供了丰富的API,允许开发者对XML进行增、删、改、查...

    使用DOM4J对XML文件操作-添加、修改、删除、获取元素节点

    在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除元素以及获取元素节点。 1. **添加元素节点** 在DOM4J中,添加元素节点通常涉及创建一个新的`Element`对象,然后将其...

    java_dom解析xml xml java

    - 可以通过DOM树上的节点执行各种操作,如添加新元素、修改属性值、删除节点等。 #### 总结 DOM解析是Java中一种常用的处理XML文档的方式。它将整个文档加载到内存中,并通过DOM树的形式提供对文档内容的访问。...

    java.dom4j

    你可以添加、删除或更新元素、属性,甚至可以移动节点。 4. **查询XML**:DOM4J支持XPath表达式,这是一种强大的查询语言,用于选取XML文档中的特定节点。通过`XPath`对象,你可以根据路径表达式找到文档中的任意...

    java 通过dom4j操作 xml

    Java中的DOM4J库是一个非常流行的XML处理工具,它提供了灵活且高效的API来解析、创建、修改和查询XML文档。DOM4J的名字来源于DOM(Document Object Model)和JDOM,它融合了两者的优势,提供了更丰富的功能和更好的...

    dom解析基本操作删除 修改……

    根据提供的文件信息,我们可以归纳出以下关于DOM解析的基本操作,包括删除、修改及将操作结果写入硬盘等关键知识点。 ### DOM解析基本操作——删除与修改XML文件 #### 一、DOM简介 DOM (Document Object Model) 是...

    java_dom4j架包

    8. **文档修改**:DOM4J提供了丰富的API,可以方便地添加、删除、替换和移动XML文档的元素、属性和文本节点。 9. **命名空间处理**:对于处理包含命名空间的XML文档,DOM4J提供了专门的处理机制,简化了命名空间...

    java Dom教程PDF版

    4. **节点操作**:通过DOM,你可以查找、添加、删除或修改XML文档中的任何节点。例如,使用getElementsByTagName、getElementById等方法找到特定元素,使用appendChild、removeChild和setAttribute等方法进行修改。 ...

    XML节点的操作

    在给定的代码片段中,可以看到一系列关于XML节点操作的方法,包括查询所有节点、删除子节点、添加子节点以及更新子节点。下面分别对这些方法进行详细解析。 ##### 1. 查询所有节点(`selectAllNodes()`) - **创建...

    dom4j的Java工程

    在这个“dom4j的Java工程”中,我们可以看到一个示例项目,展示了如何利用DOM4J库进行XML文件的增、删、改、查操作。 首先,让我们深入了解DOM4J的基本概念。DOM4J采用了Document Object Model (DOM)接口,但它的...

    java.dom操作xml完整的例子

    3. **元素的操作**:`Element`类提供了添加、删除和修改子元素及属性的方法。例如,我们可以使用`createElement()`, `appendChild()`, `removeChild()`, `setAttribute()`等方法。 4. **属性的操作**:`Attr`类代表...

    dom4j_java_dom4jpom_

    3. **修改XML**:通过`Element`对象的方法添加、删除或修改子元素、属性。 4. **保存XML**:修改完成后,使用`Writer`或`OutputStream`将XML树序列化回文件。 DOM4J因其简洁的API和高性能,成为Java开发者的首选XML...

    Java解析XML文档(DOM与DOM4j两种方式)

    Java提供了多种解析XML的API,其中DOM(Document Object Model)和DOM4j是常用的两种方法。本文将详细介绍这两种方式以及如何使用它们进行XML文档的增、删、改查操作。 一、DOM解析 DOM解析器将整个XML文档加载到...

    dom4j-java-API

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单且高效的API,使得开发者可以轻松地解析、创建、修改以及操作XML数据。在Java世界中,DOM4J是与DOM(Document Object Model)相媲美的一个选择,但它比...

    java解析XML dom4j dom4j-1.6.1.jar

    通过上述内容,我们了解了dom4j的基本用法,包括解析、遍历、修改和序列化XML文档,以及使用XPath进行节点查询。在实际开发中,这些功能可以极大地简化XML处理任务。尽管dom4j-1.6.1.jar是一个较旧的版本,但其核心...

    DOM4J 解析XML 添加 删除 修改

    这篇博客主要探讨了如何使用DOM4J进行XML文档的操作,包括添加、删除和修改元素。下面将详细阐述DOM4J库的核心概念以及在XML操作中的具体应用。 DOM4J的全称是“Document Object Model for Java”,它是基于Java的...

    java dom4j jar包+dom4j API

    3. **修改XML**:可以通过`Element`对象的方法添加、删除或修改元素和属性。 4. **保存XML**:创建`XMLWriter`对象,使用`write()`方法将修改后的XML写回文件。 **DOM4J与JavaWeb的关系:** 在JavaWeb开发中,DOM4J...

    Java使用sax、dom、dom4j解析xml文档

    DOM解析器的优点在于提供了一种灵活且易于使用的API,可以方便地进行添加、删除和修改XML内容。以下是一个DOM解析的例子: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document...

    java中用dom4j读取xml

    4. **访问和修改元素**:可以使用`element.getText()`获取元素的文本,`element.attributeValue("attrName")`获取属性值,`element.addElement("newElement")`添加新元素,`element.remove()`删除元素。 5. **保存...

Global site tag (gtag.js) - Google Analytics