您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何使用DOM方式修改XML文件內容,代碼簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
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>
上述內容就是如何使用DOM方式修改XML文件內容,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。