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

Java讀取XML實現過程(DOM方式)

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

Java讀取XML(DOM方式)

1、demo.xml文件內容

<?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>

注意事項:

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

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里面數據
 */
public class ReadXML {

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

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

                }
            }

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

}

執(zhí)行結果:

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Mybatis超級強大的動態(tài)SQL語句大全

    Mybatis超級強大的動態(tài)SQL語句大全

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

    Java如何替換第一個和最后一個字符串

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

    Maven引用自定義jar包方式

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

    Java特性隊列和棧的堵塞原理解析

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

    MybatisPlus查詢條件為空字符串或null問題及解決

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

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

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

    Java使用反射獲取list泛型過程淺析

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

    Springboot關于@Configuration的用法解讀

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

    詳解Spring MVC3返回JSON數據中文亂碼問題解決

    本篇文章主要介紹了Spring MVC3返回JSON數據中文亂碼問題解決,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • 詳解MyBatis自定義Plugin插件

    詳解MyBatis自定義Plugin插件

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

最新評論

富民县| 渭源县| 望城县| 信阳市| 泾源县| 景洪市| 习水县| 彭山县| 屯昌县| 荆州市| 静安区| 江孜县| 无棣县| 西藏| 白河县| 确山县| 福鼎市| 司法| 陆良县| 论坛| 宁陵县| 兰坪| 五台县| 定陶县| 徐州市| 进贤县| 韶山市| 宜昌市| 吉林市| 彰武县| 东光县| 永和县| 阿克陶县| 九江县| 德化县| 祁门县| 灌南县| 家居| 承德市| 长岭县| 临夏市|