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)!

RSS文档是一种简便的订阅机制,通过XML文件发布内容更新。1.RSS文档结构由和元素组成,包含多个。2.使用RSS阅读器订阅频道,并通过解析XML提取信息。3.高级用法包括使用feedparser库进行过滤和排序。4.常见错误包括XML解析和编码问题,调试时需验证XML格式和编码。5.性能优化建议包括缓存RSS文档和异步解析。

RSS和XML在现代Web中依然重要。1.RSS用于发布和分发内容,用户可通过RSS阅读器订阅并获取更新。2.XML作为标记语言,支持数据存储和交换,RSS文件基于XML。

RSS可以实现多媒体内容嵌入、条件订阅、以及性能和安全性优化。1)通过标签嵌入多媒体内容,如音频和视频。2)使用XML命名空间实现条件订阅,允许订阅者根据特定条件筛选内容。3)通过CDATA节和XMLSchema优化RSSFeed的性能和安全性,确保稳定性和符合标准。

RSS是一种基于XML的格式,用于发布常更新的数据。作为Web开发者,理解RSS能提升内容聚合和自动化更新能力。通过学习RSS结构、解析和生成方法,你将能自信地处理RSSfeeds,优化Web开发技能。

RSS选择XML而不是JSON是因为:1)XML的结构化和验证能力优于JSON,适合RSS复杂数据结构的需求;2)XML当时有广泛的工具支持;3)RSS早期版本基于XML,已成标准。

RSS是一种基于XML的格式,用于订阅和阅读频繁更新的内容。它的工作原理包括生成和消费两部分,使用RSS阅读器可以高效获取信息。

RSS文档的核心结构包括XML标签和属性,具体解析和生成步骤如下:1.读取XML文件,处理和标签。2.提取、、等标签信息。3.处理自定义标签和属性,确保版本兼容性。4.使用缓存和异步处理优化性能,确保代码可读性。

JSON、XML和RSS的主要区别在于结构和用途:1.JSON适用于简单数据交换,结构简洁,易于解析;2.XML适合复杂数据结构,结构严谨但解析复杂;3.RSS基于XML,用于内容发布,标准化但用途有限。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

记事本++7.3.1
好用且免费的代码编辑器

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具