最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java讀取XML實(shí)現(xiàn)過(guò)程(DOM方式)

 更新時(shí)間:2025年11月20日 16:08:09   作者:誠(chéng)??  
文章介紹了如何使用Java的DOM方式讀取XML文件,并詳細(xì)說(shuō)明了讀取過(guò)程中需要注意的事項(xiàng),如文件路徑、節(jié)點(diǎn)層級(jí)和屬性值的獲取方式,作者通過(guò)一個(gè)示例代碼展示了如何實(shí)現(xiàn)XML的讀取,并總結(jié)了自己的經(jīng)驗(yàn),希望對(duì)讀者有所幫助

Java讀取XML(DOM方式)

1、demo.xml文件內(nèi)容

<?xml version="1.0" encoding="UTF-8"?>
<Model>
	<user>
		<id Value="123">1</id>
		<userName>18888222111</userName>
		<passWord>2231231</passWord>
		<propertyes>
			<property Name="name" Value="張三" />
			<property Name="age" Value="28" />
			<property Name="sex" Value="男" />
		</propertyes>
	</user>
	<user>
		<id>2</id>
		<userName>17888222111</userName>
		<passWord>3231231</passWord>
		<propertyes>
			<property Name="name" Value="張三22" />
			<property Name="age" Value="23" />
			<property Name="sex" Value="男" />
		</propertyes>
	</user>
	<user>
		<id>3</id>
		<userName>197888222111</userName>
		<passWord>14231231</passWord>
		<propertyes>
			<property Name="Name" Value="張三33" />
			<property Name="age" Value="21" />
			<property Name="sex" Value="男" />
		</propertyes>
	</user>
</Model>

注意事項(xiàng):

  • 1、注意下xml所在包路徑
  • 2、里面每一層都可以理解為一個(gè)節(jié)點(diǎn),讀取時(shí)一直在對(duì)節(jié)點(diǎn)操作
  • 3、注意當(dāng)前讀取節(jié)點(diǎn)的層數(shù),目前是第幾層節(jié)點(diǎn)
  • 4、當(dāng)前節(jié)點(diǎn)是以屬性的方式設(shè)置的value還是在標(biāo)簽中間賦值

2、java代碼

package com;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

/**
 * @Author: wangxingcheng
 * @DateTime: 2022/6/25 17:48
 * @Description: 使用dom讀取XML里面數(shù)據(jù)
 */
public class ReadXML {

    public static void main(String[] args) {
        readXML();
    }

    //解析XML數(shù)據(jù)
    public static void readXML(){
        try{
            // 創(chuàng)建解析器工廠
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = factory.newDocumentBuilder();
            // 創(chuàng)建一個(gè)Document對(duì)象 設(shè)置XML位置
            Document doc = db.parse("src/com/xml/demo.xml");
            //獲取xml中Model節(jié)點(diǎn)
            NodeList modelList = doc.getElementsByTagName("Model");
            System.out.println("查詢(xún)Model節(jié)點(diǎn)有幾個(gè)========="+modelList.getLength());
            //循環(huán)modelList節(jié)點(diǎn),獲取modelList里面的其他節(jié)點(diǎn)
            for(int i = 0 ; i < modelList.getLength() ; i++){
                Node model = modelList.item(i);
                System.out.println("model ================"+model);
                //獲取model節(jié)點(diǎn)的子節(jié)點(diǎn),上圖可以看出model的子節(jié)點(diǎn)是user節(jié)點(diǎn)
                NodeList userNodes = model.getChildNodes();
                for(int j = 0 ; j < userNodes.getLength() ; j++){
                    //獲取到user節(jié)點(diǎn),循環(huán)取出每個(gè)user節(jié)點(diǎn)
                    Node user = userNodes.item(j);
                    //獲取user節(jié)點(diǎn)的所有子節(jié)點(diǎn)集合里面有id、userName、passWord、propertyes節(jié)點(diǎn)
                    NodeList childNodes = user.getChildNodes();
                    for(int k = 0 ; k < childNodes.getLength() ; k++){
                        // 區(qū)分,去掉空格和換行符
                        if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) {
                            //獲取到有屬性的節(jié)點(diǎn)了,打印看下是不是想要的id、userName、passWord、propertyes節(jié)點(diǎn)值和屬性
                            Node node = childNodes.item(k);
                            System.out.print("屬性名=========:" + node.getNodeName());
                            //xml根節(jié)點(diǎn)設(shè)值的位置將會(huì)決定他取值的不同
                            // 1、<id>123</id> 這種取值方式需要使用 .getTextContent() 方法才可以取到值
                            System.out.println("屬性值=========:" + node.getTextContent());
                            // 第二種就是<property Name="Name" Value="張三" />這種寫(xiě)法的取值
                            //屬性名=========:propertyes屬性值=========:剛打印了下這里面每值,原因是這個(gè)節(jié)點(diǎn)本身沒(méi)有值,切包含了其他節(jié)點(diǎn)
                            //這里做一手判斷
                            if(node.getNodeName().equals("propertyes")){//這里再取里面節(jié)點(diǎn)的屬性值,也是第二種取值方式
                                //獲取propertyes里面的屬性
                                NodeList propertyNodeList = node.getChildNodes();
                                for (int g = 0 ; g < propertyNodeList.getLength() ; g++) {
                                    // 區(qū)分,去掉空格和換行符
                                    if (propertyNodeList.item(g).getNodeType() == Node.ELEMENT_NODE) {
                                        Node propertye = propertyNodeList.item(g);
                                        //第二種取值方式來(lái)了,這個(gè)看圖片很明顯他把值都設(shè)置在對(duì)應(yīng)的屬性里面了,獲取當(dāng)前propertye節(jié)點(diǎn)的所有屬性
                                        NamedNodeMap attributes = propertye.getAttributes();
                                        //<property Name="name" Value="張三" /> .getNodeValue()用來(lái)去屬性里面設(shè)置的值
                                        Node name = attributes.item(0);//表示第一個(gè)屬性Name
                                        Node value = attributes.item(1);//表示第二個(gè)屬性Value
                                        System.out.println("property的name值======"+name.getNodeValue());
                                        System.out.println("property的value值======"+value.getNodeValue());
                                    }
                                }
                            }
                        }
                    }

                }
            }

        }catch (Exception e){
            e.printStackTrace();
        }
    }

}

執(zhí)行結(jié)果:

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mybatis超級(jí)強(qiáng)大的動(dòng)態(tài)SQL語(yǔ)句大全

    Mybatis超級(jí)強(qiáng)大的動(dòng)態(tài)SQL語(yǔ)句大全

    MyBatis的動(dòng)態(tài)SQL是基于OGNL表達(dá)式的,它可以幫助我們方便的在SQL語(yǔ)句中實(shí)現(xiàn)某些邏輯,下面這篇文章主要給大家介紹了關(guān)于Mybatis超級(jí)強(qiáng)大的動(dòng)態(tài)SQL語(yǔ)句的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Java如何替換第一個(gè)和最后一個(gè)字符串

    Java如何替換第一個(gè)和最后一個(gè)字符串

    這篇文章主要介紹了Java如何替換第一個(gè)和最后一個(gè)字符串的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Maven引用自定義jar包方式

    Maven引用自定義jar包方式

    這篇文章主要介紹了Maven引用自定義jar包方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java特性隊(duì)列和棧的堵塞原理解析

    Java特性隊(duì)列和棧的堵塞原理解析

    這篇文章主要介紹了Java特性隊(duì)列和棧的堵塞原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • MybatisPlus查詢(xún)條件為空字符串或null問(wèn)題及解決

    MybatisPlus查詢(xún)條件為空字符串或null問(wèn)題及解決

    這篇文章主要介紹了MybatisPlus查詢(xún)條件為空字符串或null問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Java面試基礎(chǔ)之TCP連接以及其優(yōu)化

    Java面試基礎(chǔ)之TCP連接以及其優(yōu)化

    這篇文章主要給大家介紹了關(guān)于Java面試基礎(chǔ)之TCP連接以及其優(yōu)化的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Java使用反射獲取list泛型過(guò)程淺析

    Java使用反射獲取list泛型過(guò)程淺析

    這篇文章主要介紹了Java使用反射獲取list泛型過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2023-02-02
  • Springboot關(guān)于@Configuration的用法解讀

    Springboot關(guān)于@Configuration的用法解讀

    本文總結(jié)了Spring框架中@configuration注解的用法,包括基本說(shuō)明、使用場(chǎng)景、與@Component、@Profile等注解的結(jié)合使用、@import與@importresource的區(qū)別、@lazy的作用等,通過(guò)示例代碼詳細(xì)介紹了如何使用@Configuration進(jìn)行基于注解的配置
    2026-04-04
  • 詳解Spring MVC3返回JSON數(shù)據(jù)中文亂碼問(wèn)題解決

    詳解Spring MVC3返回JSON數(shù)據(jù)中文亂碼問(wèn)題解決

    本篇文章主要介紹了Spring MVC3返回JSON數(shù)據(jù)中文亂碼問(wèn)題解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-01-01
  • 詳解MyBatis自定義Plugin插件

    詳解MyBatis自定義Plugin插件

    這篇文章主要介紹了MyBatis自定義Plugin插件的相關(guān)知識(shí),實(shí)現(xiàn)方法也很簡(jiǎn)單,只需實(shí)現(xiàn) Interceptor 接口,并指定想要攔截的方法簽名即可,需要的朋友可以參考下
    2018-06-06

最新評(píng)論

宜阳县| 板桥市| 资兴市| 德兴市| 洪江市| 都昌县| 石棉县| 东乡族自治县| 乡宁县| 芮城县| 拜泉县| 南通市| 镶黄旗| 杨浦区| 科技| 正镶白旗| 广宁县| 德化县| 大英县| 镶黄旗| 县级市| 静乐县| 固阳县| 兰坪| 息烽县| 扶沟县| 宾阳县| 遵义县| 福泉市| 台山市| 武清区| 桃园市| 苍梧县| 高安市| 石狮市| 凉山| 抚宁县| 梨树县| 公主岭市| 准格尔旗| 彩票|