dom4j 根據xml節點路徑查詢節點,找到對應的目標節點下的子節點,對節點Text值進行修改
<config>
<Property>
<Name>資料</Name>
<Level>0</Level>
<IsKey>0</IsKey>
<Key/>
<stdTableName>DB_MSSFJZ.T_MSSFJZDSRHZYSAR</stdTableName>
<stdFieldName>N_RDZXCJ</stdFieldName>
<stdType>INT</stdType>
<stdLength/>
<DefaultValue/>
<TranslateType/>
<TranslateCondition/>
<PreCondition/>
</Property>
</config>
節選了xml的一段,需求:修改“人大_政協層級”的同級節點<stdType>將節點值由"INT"改為"Text".
root.element("stdType")方法:獲取root節點下名為<stdType>的節點;
root.elementText("Name")方法:獲取root節點下<Name>節點的文字;
package org.dom4j.io;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
public class ChangeNodeData {
private static String path = "F:\\15xsd修改\\testxml";
public static void main(String[] args) {
Element element = null;
try {
File folder = new File(path);
//list()獲取目錄下所有檔案
//list()獲取目錄下所有檔案及目錄的絕對路徑
//使用增強for遍歷目錄下檔案(批量處理xml檔案)
for (File f : folder.listFiles()) {
System.out.println("獲取檔案:" + f);
//建立SAXReader,呼叫起read方法解析xml檔案
SAXReader reader = new SAXReader();
//讀取檔案,獲取document物件
Document document = reader.read(f);
//獲取根節點
element = document.getRootElement();
System.out.println("根節點:" + element);
//根據xml節點路徑查詢節點
List l=document.selectNodes("/config/Property");//設定查詢Property節點的xml路徑
Iterator it=l.iterator();
while(it.hasNext()){
Element elm=(Element)it.next();
if(elm.elementText("Name").equals("資料")){//獲取elm節點下的<Name>節點的內容與後面字串比較。
elm.element("stdType").setText("Text");//給<stdType>節點內容設為Text
System.out.println(elm.elementText("stdType"));
}
}
try {
Writer osWrite = new OutputStreamWriter(
new FileOutputStream(f));//建立輸出流
OutputFormat format = OutputFormat.createPrettyPrint(); //獲取輸出的指定格式
format.setEncoding("UTF-8");//設定編碼 ,確保解析的xml為UTF-8格式
XMLWriter writer = new XMLWriter(osWrite, format);//XMLWriter 指定輸出檔案以及格式
writer.write(document);//把document寫入xmlFile指定的檔案(可以為被解析的檔案或者新建立的檔案)
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (Exception ex) {
ex.printStackTrace();
System.out.println(ex.getMessage());
}
}
}
下面為結果(擷取部分):
<Property>
<Name>資料</Name>
<Level>0</Level>
<IsKey>0</IsKey>
<Key/>
<stdTableName>DB_MSSFJZ.T_MSSFJZDSRHZYSAR</stdTableName>
<stdFieldName>N_RDZXCJ</stdFieldName>
<stdType>Text</stdType>
<stdLength/>
<DefaultValue/>
<TranslateType/>
<TranslateCondition/>
<PreCondition/>
</Property>
相關文章
- mysql根據節點查詢所有葉節點MySql
- 【vue】在二叉樹中根據子節點找出父節點路徑Vue二叉樹
- XML 設定根節點值XML
- 資料庫——查詢樹形結構某節點的所有子節點、所有父節點資料庫
- MySQL遞迴查詢樹狀表的子節點、父節點MySql遞迴
- Linq to xml 查詢所有的子節點XML
- onnx 增刪改查,修改節點,刪除節點,修改input,output
- JavaScript學習之DOM(節點、節點層級、節點操作)JavaScript
- layui tree 對節點進行搜尋UI
- jQuery如何獲取元素父節點和子節點jQuery
- js,javascript 根據 xpath 路勁定位節點JSJavaScript
- RAC 雙節點 轉單節點流程
- leetcode------給定一個二叉樹和一個值sum,判斷是否有從根節點到葉子節點的節點值之和等於sum 的路徑,LeetCode二叉樹
- json 陣列已知父節點,求所有子節點JSON陣列
- Ext實現點選節點,父子節點反選
- DataNode工作機制 & 新增節點 &下線節點
- 填充每個節點的下一個右側節點指標指標
- 二叉樹兩個節點的公共節點二叉樹
- Java中在二叉搜尋樹中查詢節點的父節點Java
- css 定位如何依次定位多個節點下面的子節點CSS
- MySQL:非葉子節點指標MySql指標
- consul 多節點/單節點叢集搭建
- JQuery2:節點選取與節點插入jQuery
- 填充每個節點的下一個右側節點指標 II指標
- js用字首名查詢class或id節點,js模糊查詢某個dom節點JS
- jquery獲取指定節點的第一級文字節點jQuery
- 使用jaxp解析器dom方式對xml節點進行操作XML
- 用C#讀取XML指定節點下的值C#XML
- sql server 樹狀結構表中,獲取指定節點的所有父節點路徑SQLServer
- k8s系列--node(k8s節點介紹,新增節點,移除節點)K8S
- MongoDB叢集搭建(包括隱藏節點,仲裁節點)MongoDB
- 節點快取的優缺點快取
- Mysql增加節點MySql
- Java —— 節點流Java
- 新增節點教程
- KubeSphere 新增節點
- 刷題系列 - 在二叉樹中查詢給出節點,並返回以該節點為根的樹二叉樹
- 樹,計算父節點的值