黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 在Java中修改XML文件

在Java中修改XML文件

更新時(shí)間:2021-12-06 09:16:00 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽3131次

1.XML文件,前后

原始 XML 文件。

<?xml version="1.0" encoding="utf-8"?>
<company>
    <staff id="1001">
        <name>mkyong</name>
        <role>support</role>
    </staff>
    <staff id="1002">
        <name>yflow</name>
        <role>admin</role>
    </staff>
</company>

稍后我們將使用 DOM 解析器來(lái)修改以下 XML 數(shù)據(jù)。

對(duì)于員工 ID 1001

刪除 XML 元素name。

對(duì)于 XML 元素role,將值更新為“創(chuàng)始人”。

對(duì)于員工 ID 1002

將 XML 屬性更新為2222.

添加一個(gè)新的 XML 元素salary,包含屬性和值。

添加新的 XML 注釋。

重命名 XML 元素,從name到n(刪除和添加)。

下面是最終修改的 XML 文件。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<company>
    <staff id="1001">
        <role>founder</role>
    </staff>
    <staff id="2222">
        <role>admin</role>
        <salary currency="USD">1000</salary>
        <!--from name to n-->
        <n>yflow</n>
    </staff>
</company>

2.Dom Parser修改XML文件

下面是 DOM 解析器示例,以獲取原始 XML 文件staff-simple.xml,修改 XML 并生成修改后的 XML 文件staff-modified.xml。

package com.mkyong.xml.dom;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
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 javax.xml.transform.stream.StreamSource;
import java.io.*;
public class ModifyXmlDomParser {
    private static final String FILENAME = "src/main/resources/staff-simple.xml";
    // xslt for pretty print only, no special task
    private static final String FORMAT_XSLT = "src/main/resources/xslt/staff-format.xslt";
    public static void main(String[] args) {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try (InputStream is = new FileInputStream(FILENAME)) {
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(is);
            NodeList listOfStaff = doc.getElementsByTagName("staff");
            //System.out.println(listOfStaff.getLength()); // 2
            for (int i = 0; i < listOfStaff.getLength(); i++) {
                // get first staff
                Node staff = listOfStaff.item(i);
                if (staff.getNodeType() == Node.ELEMENT_NODE) {
                    String id = staff.getAttributes().getNamedItem("id").getTextContent();
                    if ("1001".equals(id.trim())) {
                        NodeList childNodes = staff.getChildNodes();
                        for (int j = 0; j < childNodes.getLength(); j++) {
                            Node item = childNodes.item(j);
                            if (item.getNodeType() == Node.ELEMENT_NODE) {
                                if ("role".equalsIgnoreCase(item.getNodeName())) {
                                    // update xml element `role` text
                                    item.setTextContent("founder");
                                }
                                if ("name".equalsIgnoreCase(item.getNodeName())) {
                                    // remove xml element `name`
                                    staff.removeChild(item);
                                }
                            }
                        }
                        // add a new xml element, address
                        Element address = doc.createElement("address");
                        // add a new xml CDATA
                        CDATASection cdataSection =
                                doc.createCDATASection("HTML tag <code>testing</code>");
                        address.appendChild(cdataSection);
                        staff.appendChild(address);
                    }
                    if ("1002".equals(id.trim())) {
                        // update xml attribute, from 1002 to 2222
                        staff.getAttributes().getNamedItem("id").setTextContent("2222");
                        // add a new xml element, salary
                        Element salary = doc.createElement("salary");
                        salary.setAttribute("currency", "USD");
                        salary.appendChild(doc.createTextNode("1000"));
                        staff.appendChild(salary);
                        // rename a xml element from `name` to `n`
                        // sorry, no API for this, we need to remove and create
                        NodeList childNodes = staff.getChildNodes();
                        for (int j = 0; j < childNodes.getLength(); j++) {
                            Node item = childNodes.item(j);
                            if (item.getNodeType() == Node.ELEMENT_NODE) {
                                if ("name".equalsIgnoreCase(item.getNodeName())) {
                                    // Get the text of element `name`
                                    String name = item.getTextContent();
                                    // remove xml element `name`
                                    staff.removeChild(item);
                                    // add a new xml element, n
                                    Element n = doc.createElement("n");
                                    n.appendChild(doc.createTextNode(name));
                                    // add a new comment
                                    Comment comment = doc.createComment("from name to n");
                                    staff.appendChild(comment);
                                    staff.appendChild(n);
                                }
                            }
                        }
                    }
                }
            }
            // output to console
            // writeXml(doc, System.out);
            try (FileOutputStream output =
                         new FileOutputStream("c:\\test\\staff-modified.xml")) {
                writeXml(doc, output);
            }
        } catch (ParserConfigurationException | SAXException
                | IOException | TransformerException e) {
            e.printStackTrace();
        }
    }
    // write doc to output stream
    private static void writeXml(Document doc,
                                 OutputStream output)
            throws TransformerException, UnsupportedEncodingException {
        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        // The default add many empty new line, not sure why?
        // https://mkyong.com/java/pretty-print-xml-with-java-dom-and-xslt/
        // Transformer transformer = transformerFactory.newTransformer();
        // add a xslt to remove the extra newlines
        Transformer transformer = transformerFactory.newTransformer(
                new StreamSource(new File(FORMAT_XSLT)));
        // pretty print
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.STANDALONE, "no");
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(output);
        transformer.transform(source, result);
    }
}

輸出 – 修改后的 XML 文件。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<company>
    <staff id="1001">
        <role>founder</role>
        <address>
            <![CDATA[HTML tag <code>testing</code>]]>
        </address>
    </staff>
    <staff id="2222">
        <role>admin</role>
        <salary currency="USD">1000</salary>
        <!--from name to n-->
        <n>yflow</n>
    </staff>
</company>

3. 下載源代碼

$ git clone https://github.com/mkyong/core-java
$ cd java-xml
$ cd src/main/java/com/mkyong/xml/dom/

通過(guò)上述介紹相信大家對(duì)在Java中修改XML文件的方法已經(jīng)有所了解,大家如果想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java視頻,里面的課程內(nèi)容詳細(xì),由淺到深,通俗易懂,適合小白觀看學(xué)習(xí),希望對(duì)大家能夠有所幫助。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 伊人天堂在线 | 久久99国产亚洲精品观看 | 国产欧美日韩精品综合 | 污版网站| www.丁香| 在线观看男女爱视频网站 | 夜夜弄| 日韩成人黄色片 | 国产一区二区三区不卡免费观看 | 日本午夜视频在线 | 日韩国产欧美在线观看一区二区 | 农村寡妇一级毛片免费播放 | 天天躁日日躁成人字幕aⅴ 天天在线欧美精品免费看 天天影视涩香欲综合网 | 亚洲图片欧美色图 | 玖玖香蕉 | 日韩欧美国产高清在线观看 | 欧美成人精品高清在线观看 | 亚洲韩国日本欧美一区二区三区 | aa一级黄色片 | 国产黄a三级三级看三级 | 一区二区在线视频观看 | 国产欧美日韩中文久久 | 亚洲精品国产综合一线久久 | 日韩伦理亚洲欧美在线一区 | 久久综合九色欧美综合狠狠 | 亚洲国产成人久久综合碰 | 高清中文字幕视频在线播 | 国产日韩欧美一区二区 | 免费看黄片毛片 | 免费高清a级毛片在线播放 免费高清欧美一区二区视频 | 伊人网网 | 免费在线观看污污视频 | 在线观看一级片 | 国产在线观看一区二区三区四区 | 国产激情久久久久影 | 国产在线观看99 | 波多野吉衣中文字幕 | 亚洲成成品网站有线 | 国产bbwbbwbbwbbw| 欧美色图偷窥自拍 | 99久久伊人|