Java&Xml教程(三)使用DOM方式修改XML文件内容

互联网 17-2-22
<?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 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 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.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Java&Xml教程(二)使用DOM方式解析XML文件

相关资讯