DOM解析方式也可用于修改XML数据,我们可以使用它完成新增元素、删除元素、修改元素值、修改元素属性等操作。

我们的XML文件,内容如下:
employee.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Employees>    <Employee id="1">        <name>Pankaj</name>        <age>29</age>        <role>Java Developer</role>        <gender>Male</gender>    </Employee>    <Employee id="2">        <name>Lisa</name>        <age>35</age>        <role>CSS Developer</role>        <gender>Female</gender>    </Employee></Employees>

我们将修改XML文件的内容:
1.根据员工的性别(gender)修改”id”属性值,性别为男(Male)的id属性值中追加”M”,为女(Female)的id属性值追加”F”。
2.修改name元素的值,全部变成大写。
3.”gender”元素已经没有存在的意义了,我们删除它。
4.在employee节点下新增一个”salary”节点。
当我们完成上述操作后,将内容保存在一个新的xml文件中。
下面是使用DOM方式解析的Java程序代码:
ModifyXMLDOM.java

package com.journaldev.xml;import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;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.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class ModifyXMLDOM {    public static void main(String[] args) {        String filePath = "employee.xml";        File xmlFile = new File(filePath);        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();        DocumentBuilder dBuilder;        try {            dBuilder = dbFactory.newDocumentBuilder();            Document doc = dBuilder.parse(xmlFile);            doc.getDocumentElement().normalize();            //update attribute value            updateAttributeValue(doc);            //update Element value            updateElementValue(doc);            //delete element            deleteElement(doc);            //add new element            addElement(doc);            //write the updated document to file or console            doc.getDocumentElement().normalize();            TransformerFactory transformerFactory = TransformerFactory.newInstance();            Transformer transformer = transformerFactory.newTransformer();            DOMSource source = new DOMSource(doc);            StreamResult result = new StreamResult(new File("employee_updated.xml"));            transformer.setOutputProperty(OutputKeys.INDENT, "yes");            transformer.transform(source, result);            System.out.println("XML file updated successfully");        } catch (SAXException | ParserConfigurationException | IOException | TransformerException e1) {            e1.printStackTrace();        }    }    private static void addElement(Document doc) {        NodeList employees = doc.getElementsByTagName("Employee");        Element emp = null;        //loop for each employee        for(int i=0; i<employees.getLength();i++){            emp = (Element) employees.item(i);            Element salaryElement = doc.createElement("salary");            salaryElement.appendChild(doc.createTextNode("10000"));            emp.appendChild(salaryElement);        }    }    private static void deleteElement(Document doc) {        NodeList employees = doc.getElementsByTagName("Employee");        Element emp = null;        //loop for each employee        for(int i=0; i<employees.getLength();i++){            emp = (Element) employees.item(i);            Node genderNode = emp.getElementsByTagName("gender").item(0);            emp.removeChild(genderNode);        }    }    private static void updateElementValue(Document doc) {        NodeList employees = doc.getElementsByTagName("Employee");        Element emp = null;        //loop for each employee        for(int i=0; i<employees.getLength();i++){            emp = (Element) employees.item(i);            Node name = emp.getElementsByTagName("name").item(0).getFirstChild();            name.setNodeValue(name.getNodeValue().toUpperCase());        }    }    private static void updateAttributeValue(Document doc) {        NodeList employees = doc.getElementsByTagName("Employee");        Element emp = null;        //loop for each employee        for(int i=0; i<employees.getLength();i++){            emp = (Element) employees.item(i);            String gender = emp.getElementsByTagName("gender").item(0).getFirstChild().getNodeValue();            if(gender.equalsIgnoreCase("male")){                //prefix id attribute with M                emp.setAttribute("id", "M"+emp.getAttribute("id"));            }else{                //prefix id attribute with F                emp.setAttribute("id", "F"+emp.getAttribute("id"));            }        }    }}

输出xml文件内容:
employee_updated.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Employees>    <Employee id="M1">        <name>PANKAJ</name>        <age>29</age>        <role>Java Developer</role>    <salary>10000</salary></Employee>    <Employee id="F2">        <name>LISA</name>        <age>35</age>        <role>CSS Developer</role>    <salary>10000</salary></Employee></Employees>

原文地址:http://www.php.cn/

DOM解析方式也可用于修改XML数据,我们可以使用它完成新增元素、删除元素、修改元素值、修改元素属性等操作。
我们的XML文件,内容如下:
employee.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Employees>    <Employee id="1">        <name>Pankaj</name>        <age>29</age>        <role>Java Developer</role>        <gender>Male</gender>    </Employee>    <Employee id="2">        <name>Lisa</name>        <age>35</age>        <role>CSS Developer</role>        <gender>Female</gender>    </Employee></Employees>

我们将修改XML文件的内容:
1.根据员工的性别(gender)修改”id”属性值,性别为男(Male)的id属性值中追加”M”,为女(Female)的id属性值追加”F”。
2.修改name元素的值,全部变成大写。
3.”gender”元素已经没有存在的意义了,我们删除它。
4.在employee节点下新增一个”salary”节点。
当我们完成上述操作后,将内容保存在一个新的xml文件中。
下面是使用DOM方式解析的Java程序代码:
ModifyXMLDOM.java

package com.journaldev.xml;import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;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.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class ModifyXMLDOM {    public static void main(String[] args) {        String filePath = "employee.xml";        File xmlFile = new File(filePath);        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();        DocumentBuilder dBuilder;        try {            dBuilder = dbFactory.newDocumentBuilder();            Document doc = dBuilder.parse(xmlFile);            doc.getDocumentElement().normalize();            //update attribute value            updateAttributeValue(doc);            //update Element value            updateElementValue(doc);            //delete element            deleteElement(doc);            //add new element            addElement(doc);            //write the updated document to file or console            doc.getDocumentElement().normalize();            TransformerFactory transformerFactory = TransformerFactory.newInstance();            Transformer transformer = transformerFactory.newTransformer();            DOMSource source = new DOMSource(doc);            StreamResult result = new StreamResult(new File("employee_updated.xml"));            transformer.setOutputProperty(OutputKeys.INDENT, "yes");            transformer.transform(source, result);            System.out.println("XML file updated successfully");        } catch (SAXException | ParserConfigurationException | IOException | TransformerException e1) {            e1.printStackTrace();        }    }    private static void addElement(Document doc) {        NodeList employees = doc.getElementsByTagName("Employee");        Element emp = null;        //loop for each employee        for(int i=0; i<employees.getLength();i++){            emp = (Element) employees.item(i);            Element salaryElement = doc.createElement("salary");            salaryElement.appendChild(doc.createTextNode("10000"));            emp.appendChild(salaryElement);        }    }    private static void deleteElement(Document doc) {        NodeList employees = doc.getElementsByTagName("Employee");        Element emp = null;        //loop for each employee        for(int i=0; i<employees.getLength();i++){            emp = (Element) employees.item(i);            Node genderNode = emp.getElementsByTagName("gender").item(0);            emp.removeChild(genderNode);        }    }    private static void updateElementValue(Document doc) {        NodeList employees = doc.getElementsByTagName("Employee");        Element emp = null;        //loop for each employee        for(int i=0; i<employees.getLength();i++){            emp = (Element) employees.item(i);            Node name = emp.getElementsByTagName("name").item(0).getFirstChild();            name.setNodeValue(name.getNodeValue().toUpperCase());        }    }    private static void updateAttributeValue(Document doc) {        NodeList employees = doc.getElementsByTagName("Employee");        Element emp = null;        //loop for each employee        for(int i=0; i<employees.getLength();i++){            emp = (Element) employees.item(i);            String gender = emp.getElementsByTagName("gender").item(0).getFirstChild().getNodeValue();            if(gender.equalsIgnoreCase("male")){                //prefix id attribute with M                emp.setAttribute("id", "M"+emp.getAttribute("id"));            }else{                //prefix id attribute with F                emp.setAttribute("id", "F"+emp.getAttribute("id"));            }        }    }}

输出xml文件内容:
employee_updated.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><Employees>    <Employee id="M1">        <name>PANKAJ</name>        <age>29</age>        <role>Java Developer</role>    <salary>10000</salary></Employee>    <Employee id="F2">        <name>LISA</name>        <age>35</age>        <role>CSS Developer</role>    <salary>10000</salary></Employee></Employees>

以上就是Java&Xml教程(三)使用DOM方式修改XML文件内容的内容,更多相关内容请关注PHP中文网(www.php.cn)!

更多相关文章

  1. Java&Xml教程(七)使用JDOM修改XML文件内容
  2. XML中的标签与元素的使用具体介绍
  3. 解析XML和JSON内容的一点技巧的实例代码分享
  4. XML学习(一)元素,属性,读取详解
  5. 详解在XML文档中替换元素名称的方法(图)
  6. XML开发基础-XML元素
  7. 详解使用XML Schema定义元素的基本知识(图文)
  8. 读取XML文件时报“前言中不允许有内容”错误处理办法详解
  9. web.xml文件内容详细分析

随机推荐

  1. 高级PHP工程师必备的编码技巧及思维
  2. PHP的isset()、is_null、empty()使用总结
  3. PHP上传图片到数据库并显示
  4. PHP开发常见功能实现流程
  5. PHP 文字生成透明图片之路
  6. php技巧:在实例中调用 Invoke 类型的类
  7. 这三个难的PHP知识点,你都会了吗?
  8. PHP使用Screw把源代码加密
  9. PHP高并发和大流量的解决方案
  10. Mac下使用php的error_log()函数发送邮件