matlab分析xml文件_修改Java中的XML文件(DOM分析器)

matlab分析xml文件

We can modify XML file in Java using DOM parser. We can add elements, remove elements, edit element values, edit attributes in an XML document in java using DOM Parser.

我们可以使用DOM解析器修改Java中的XML文件。 我们可以使用DOM Parser在Java中的XML文档中添加元素,删除元素,编辑元素值,编辑属性。

修改Java中的XML文件 (Modify XML File in Java)

Let’s say we have below source XML file. We will learn how to modify or edit this XML file in java program using DOM parser.

假设我们有下面的源XML文件。 我们将学习如何使用DOM解析器在Java程序中修改或编辑此XML文件。

employee.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>

We will edit the XML file with below changes.

我们将通过以下更改来编辑XML文件。

  1. Update the “id” attribute value for all the Employee based on Gender. For Male, id will be prefixed with “M” else prefix with “F”.

    根据性别更新所有员工的“ id”属性值。 对于男性,id将以“ M”为前缀,否则以“ F”为前缀。
  2. Update the value of “name” element by making it to upper case.

    通过将大写的“名称”元素的值更新。
  3. Delete “gender” element as it’s not used now.

    删除“性别”元素,因为现在不使用它。
  4. Add a new element “salary” to all the employee node in the xml.

    向xml中的所有employee节点添加一个新元素“ salary”。

Once we make above modification to the XML, we will save it to a different file.

对XML进行以上修改后,我们会将其保存到其他文件中。

Here is the java program that does all the above updates using DOM Parser.

这是使用DOM分析器进行上述所有更新的Java程序。

ModifyXMLDOM.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"));
            }
        }
    }

}

Output modified version of the XML file from above program is given below.

下面给出了来自上述程序的XML文件的输出修改版本。

employee_updated.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>

That’s all for a quick example of java edit XML file using DOM parser.

这就是使用DOM解析器的Java编辑XML文件的快速示例。

翻译自: https://www.journaldev.com/901/modify-xml-file-in-java-dom-parser

matlab分析xml文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值