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í)行結果:

總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MybatisPlus查詢條件為空字符串或null問題及解決
這篇文章主要介紹了MybatisPlus查詢條件為空字符串或null問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
Springboot關于@Configuration的用法解讀
本文總結了Spring框架中@configuration注解的用法,包括基本說明、使用場景、與@Component、@Profile等注解的結合使用、@import與@importresource的區(qū)別、@lazy的作用等,通過示例代碼詳細介紹了如何使用@Configuration進行基于注解的配置2026-04-04

