国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【196】JAVA8 用 DOM 方式的 API 解析XML文件,無需引入第三方依賴。

這篇具有很好參考價值的文章主要介紹了【196】JAVA8 用 DOM 方式的 API 解析XML文件,無需引入第三方依賴。。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

JAVA8 可以使用標(biāo)準(zhǔn)的 DOM 方式的 API 來編寫代碼解析 XML 文件,無需引入第三方依賴。下面是兩個測試用的 XML 文件:

test.xml

<allData>
    <pan attr1="a" attr2="b">
        1
    </pan>
    <tilt>
        2
    </tilt>
    <zoom>
        3
    </zoom>
    <list>
        <item>
            item0
        </item>
        <item>item1</item>
        <item>item2</item>
    </list>

    <user-list>
        <user>
            <name>
                張三
            </name>
            <gender></gender>
        </user>
        <user>
            <name>
                高啟蘭
            </name>
            <gender></gender>
        </user>
    </user-list>
</allData>

test2.xml

<allData>
    <pan attr1="a" >
        1
    </pan>
    <zoom>
        3
    </zoom>
    <list>
        <item>
            item0
        </item>
        <item>item1</item>
        <item>item2</item>
    </list>
</allData>

負(fù)責(zé)接收所有信息的 AllDataDTO.java

package zhangchao;
import java.util.ArrayList;
import java.util.List;

public class AllDataDTO {
    private Integer pan;
    private Integer tilt;
    private Integer zoom;
    private List<String> list = new ArrayList<>();
    private String panAttr1;
    private String panAttr2;
    private List<AllDataUserDTO> userList = new ArrayList<>();
    ///
    //  setters/getters
    ///
    @Override
    public String toString() {
        final StringBuffer sb = new StringBuffer("AllDataDTO{");
        sb.append("pan=").append(pan);
        sb.append(", tilt=").append(tilt);
        sb.append(", zoom=").append(zoom);
        sb.append(", list=").append(list);
        sb.append(", panAttr1='").append(panAttr1).append('\'');
        sb.append(", panAttr2='").append(panAttr2).append('\'');
        sb.append(", userList=").append(userList);
        sb.append('}');
        return sb.toString();
    }
    public List<AllDataUserDTO> getUserList() {
        return userList;
    }
    public void setUserList(List<AllDataUserDTO> userList) {
        this.userList = userList;
    }
    public List<String> getList() {
        return list;
    }
    public void setList(List<String> list) {
        this.list = list;
    }
    public String getPanAttr1() {
        return panAttr1;
    }
    public void setPanAttr1(String panAttr1) {
        this.panAttr1 = panAttr1;
    }

    public String getPanAttr2() {
        return panAttr2;
    }
    public void setPanAttr2(String panAttr2) {
        this.panAttr2 = panAttr2;
    }
    public Integer getPan() {
        return pan;
    }
    public void setPan(Integer pan) {
        this.pan = pan;
    }
    public Integer getTilt() {
        return tilt;
    }
    public void setTilt(Integer tilt) {
        this.tilt = tilt;
    }
    public Integer getZoom() {
        return zoom;
    }
    public void setZoom(Integer zoom) {
        this.zoom = zoom;
    }
}

負(fù)責(zé)接收用戶信息的 AllDataUserDTO.java

package zhangchao;

public class AllDataUserDTO {
    private String name;
    private String gender;
    @Override
    public String toString() {
        final StringBuffer sb = new StringBuffer("AllDataUserDTO{");
        sb.append("name='").append(name).append('\'');
        sb.append(", gender='").append(gender).append('\'');
        sb.append('}');
        return sb.toString();
    }
    ///
    //  setters/getters
    ///
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }
}

處理 XML 文件的工具類,XmlUtils.java

package zhangchao;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;

public class XmlUtils {
    public static AllDataDTO parseXml(String xmlFilePath) {
        File file = new File(xmlFilePath);
        if (!file.exists()) {
            return null;
        }
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();//創(chuàng)建一個DocumentBuilderFactory的對象
        DocumentBuilder builder;
        AllDataDTO allDataDTO = null;
        try {
            builder = factory.newDocumentBuilder();//創(chuàng)建一個DocumentBuilder對象
            Document doc = builder.parse("file:///" + xmlFilePath);
            Element root = doc.getDocumentElement();//獲取根節(jié)點(diǎn)
            allDataDTO = new AllDataDTO();
            NodeList childNodes = root.getChildNodes();
            int length = childNodes.getLength();
            for (int i = 0; i < length; i++) {
                Node node = childNodes.item(i);
                String nodeName = node.getNodeName();
                if ("pan".equals(nodeName)) {
                    String content = node.getTextContent();
                    content = (content == null ? null : content.trim());
                    Integer tmp = null;
                    try {
                        tmp = Integer.parseInt(content);
                    } catch (NumberFormatException e) {}
                    allDataDTO.setPan(tmp);
                    NamedNodeMap namedNodeMap = node.getAttributes();
                    Node attr1 = namedNodeMap.getNamedItem("attr1");
                    if (attr1 != null) {
                        String attr1Cont = attr1.getTextContent();
                        attr1Cont = (attr1Cont == null ? null : attr1Cont.trim());
                        allDataDTO.setPanAttr1(attr1Cont);
                    }

                    Node attr2 = namedNodeMap.getNamedItem("attr2");
                    if (attr2 != null) {
                        String attr2Cont = attr2.getTextContent();
                        attr2Cont = (attr2Cont == null ? null : attr2Cont.trim());
                        allDataDTO.setPanAttr2(attr2Cont);
                    }

                } else if ("tilt".equals(nodeName)) {
                    String content = node.getTextContent();
                    content = (content == null ? null : content.trim());
                    Integer tmp = null;
                    try {
                        tmp = Integer.parseInt(content);
                    } catch (NumberFormatException e) {}
                    allDataDTO.setTilt(tmp);
                } else if ("zoom".equals(nodeName)) {
                    String content = node.getTextContent();
                    content = (content == null ? null : content.trim());
                    Integer tmp = null;
                    try {
                        tmp = Integer.parseInt(content);
                    } catch (NumberFormatException e) {}
                    allDataDTO.setZoom(tmp);
                } else if ("list".equals(nodeName)) {
                    NodeList itemList = node.getChildNodes();
                    int itemLength = itemList.getLength();
                    for (int j = 0; j < itemLength; j++) {
                        Node item = itemList.item(j);
                        if ("item".equals(item.getNodeName())) {
                            String content = item.getTextContent();
                            content = (content == null ? "" : content.trim());
                            allDataDTO.getList().add(content);
                        }
                    }
                } else if ("user-list".equals(nodeName)) {
                    NodeList userList = node.getChildNodes();
                    int userListLength = userList.getLength();
                    for (int j = 0; j < userListLength; j++) {
                        Node user = userList.item(j);
                        // 讀取用戶的屬性
                        if ("user".equals(user.getNodeName())) {
                            AllDataUserDTO userDTO = new AllDataUserDTO();
                            NodeList params = user.getChildNodes();
                            int paramsLength = params.getLength();
                            for (int k = 0; k < paramsLength; k++) {
                                Node param = params.item(k);
                                String content = param.getTextContent();
                                if (content != null) {
                                    content = content.trim();
                                }
                                String paramName = param.getNodeName();
                                if ("name".equals(paramName)) {
                                    userDTO.setName(content);
                                } else if ("gender".equals(paramName)) {
                                    userDTO.setGender(content);
                                }
                            }
                            allDataDTO.getUserList().add(userDTO);
                        }
                    }
                }
            }
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        }
        return allDataDTO;
    }
}

用于測試效果的類 Main.java

package zhangchao;

public class Main {
    public static void main(String[] args) {
        AllDataDTO allDataDTO = XmlUtils
                .parseXml("E:\\ws\\zc\\Java8Xml\\src\\main\\resources\\TestFile\\" +
                        "test.xml");
        AllDataDTO allDataDTO2 = XmlUtils
                .parseXml("E:\\ws\\zc\\Java8Xml\\src\\main\\resources\\TestFile\\" +
                        "test2.xml");
        System.out.println(allDataDTO);
        System.out.println(allDataDTO2);
    }
}

輸出結(jié)果:文章來源地址http://www.zghlxwxcb.cn/news/detail-815770.html

AllDataDTO{pan=1, tilt=2, zoom=3, list=[item0, item1, item2], panAttr1='a', panAttr2='b', userList=[AllDataUserDTO{name='張三', gender='男'}, AllDataUserDTO{name='高啟蘭', gender='女'}]}
AllDataDTO{pan=1, tilt=null, zoom=3, list=[item0, item1, item2], panAttr1='a', panAttr2='null', userList=[]}

到了這里,關(guān)于【196】JAVA8 用 DOM 方式的 API 解析XML文件,無需引入第三方依賴。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java中解析XML文件

    Java中解析XML文件

    ????????XML(EXtensible Markup Language),可擴(kuò)展標(biāo)記語言,相比于HTML可以自定義標(biāo)簽,不遵循W3C標(biāo)準(zhǔn) ? ? ? ? XML特點(diǎn):跨平臺、跨語言、跨系統(tǒng)。XML與操作系統(tǒng)、編程語言的開發(fā)平臺無關(guān)。 ? ? ? ? XML作用:①數(shù)據(jù)交互②使用XML文件配置應(yīng)用程序和網(wǎng)站 1.文檔聲明 包括文檔

    2024年02月09日
    瀏覽(94)
  • [Java]_[初級]_[使用SAX流的方式寫入XML文件]

    文件的寫入目前沒有發(fā)現(xiàn)可以增量寫入的,只能是完全重新寫入。對于大量數(shù)據(jù)需要寫入 XML 文件,還是和讀 XML 文件一樣,不需要生成 DOM 模型能節(jié)省不少的內(nèi)存和指令。 在 java 標(biāo)準(zhǔn)庫里,也是有相關(guān)的SAX類來寫入數(shù)據(jù)流, StreamResult(OutputStream) 負(fù)責(zé)把數(shù)據(jù)寫入輸出流。 之后

    2024年02月10日
    瀏覽(21)
  • javaee dom4j讀取xml文件

    javaee dom4j讀取xml文件

    dom4j-1.6.1.jar 運(yùn)行

    2024年02月13日
    瀏覽(29)
  • java 使用documents4j將XML轉(zhuǎn)為pdf文件的方式

    java 使用documents4j將XML轉(zhuǎn)為pdf文件的方式

    通過spire.doc.free將word轉(zhuǎn)換成PDF時存在缺陷:只能獲取前3頁。獲取全文另外需支付費(fèi)用。 使用documents4j,documents4j會保留原word文件中更多的樣式,如修訂模式下的差異化字體顏色、文檔右側(cè)修訂記錄等。 1.引入Pom 2.??xml2pdf方法如下,xmlpath是xml文件地址,pdfPath是生成的pdf地址

    2024年02月21日
    瀏覽(20)
  • Java8 時間處理API(Date Time API)詳解

    在Java8之前,我們通常使用 java.util.Date 和 java.util.Calendar 類來處理日期和時間相關(guān)的操作,例如: 這種方式雖然可以實(shí)現(xiàn)功能,但是有一些缺點(diǎn): 可變性: Date 和 Calendar 類都是可變的,這意味著它們的值可以被修改,這可能會導(dǎo)致一些線程安全和邏輯錯誤的問題。 可讀性差

    2024年02月11日
    瀏覽(30)
  • JAVA8新特性(Stream API,LocalDate,LocalDateTime)

    一. Stream API 1.1 基礎(chǔ) 代碼參數(shù)準(zhǔn)備: 場景一:知道一個ListUser對象,如何獲取ListUser的所有用戶id? 場景二:知道一個ListUser對象,如何獲取ListUser中年齡大于50的用戶? 場景三:知道一個ListUser對象,如何按照年齡從小到小排序,從大到小排序? 場景四:知道一個ListUser對象

    2024年02月16日
    瀏覽(21)
  • 《Java8實(shí)戰(zhàn)》第8章 Collection API 的增強(qiáng)功能

    8.1 集合工廠 如果我想創(chuàng)建一個集合,之前的做法是先new一個list,然后再一個個的add,這樣子有點(diǎn)繁瑣。 現(xiàn)在的方法可以這樣,是使用 Arrays.asList()工廠方法: ListString friends = Arrays.asList(\\\"Raphael\\\", \\\"Olivia\\\", \\\"Thibaut\\\"); 但是這樣子創(chuàng)建只能更新,不可以增加、刪除。 8.1.1 List 工廠 工

    2023年04月24日
    瀏覽(20)
  • 無法在web.xml或使用此應(yīng)用程序部署的jar文件中解析絕對uri:[http://java.sun.com/jsp/jstl/core]

    無法在web.xml或使用此應(yīng)用程序部署的jar文件中解析絕對uri:[http://java.sun.com/jsp/jstl/core]

    這是我在學(xué)習(xí) JSTL 時產(chǎn)生的錯誤。 沒有使用 Maven 。 是手動引入 JSTL 包(jstl.jar 和 standard.jar)。在請求轉(zhuǎn)發(fā)到 .jsp 界面,再沒有使用 JSTL 語句前是通的,使用 JSTL 后就會報錯。 org.apache.jasper.JasperException: 無法在web.xml或使用此應(yīng)用程序部署的jar文件中解析絕對uri:[http://java.

    2023年04月08日
    瀏覽(20)
  • 【已解決】無法在web.xml或使用此應(yīng)用程序部署的jar文件中解析絕對uri:[http://java.sun.com/jsp/jstl/core]

    【已解決】無法在web.xml或使用此應(yīng)用程序部署的jar文件中解析絕對uri:[http://java.sun.com/jsp/jstl/core]

    解決時間:2023/3/31,我使用的tomcat是8.5版本的,在整合SSM項(xiàng)目時在jsp中使用JSTL的核心標(biāo)簽庫 - core,也就是使用 c:forEach 標(biāo)簽遍歷出現(xiàn)了這個問題: 無法在web.xml或使用此應(yīng)用程序部署的jar文件中解析絕對uri 不知道該怎么說明這個bug,因?yàn)槲乙呀?jīng)在網(wǎng)上試過很多方法了。 比如

    2024年02月07日
    瀏覽(29)
  • Java8 Stream分組groupBy后,取單一字段值、取列表第一個值方式

    java8 Stream中g(shù)roupBy的拓展用法。 取單一字段值、取列表第一個值方式

    2024年02月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包