使用dom4j修改xml節點內容的基本步驟如下:
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
Document document = DocumentHelper.parseText(xmlString); // 或者使用DocumentHelper.parseText(xmlString)加載字符串形式的xml
Element root = document.getRootElement();
Element node = (Element) document.selectSingleNode("//節點路徑"); // 替換節點路徑為實際的路徑
node.setText("新的內容"); // 替換新的內容為實際要修改的內容
使用遍歷方式:
Iterator<Element> iterator = root.elementIterator("節點名"); // 替換節點名為實際的節點名
while (iterator.hasNext()) {
Element element = iterator.next();
element.setText("新的內容"); // 替換新的內容為實際要修改的內容
}
OutputFormat format = OutputFormat.createPrettyPrint(); // 創建格式化輸出
XMLWriter writer = new XMLWriter(new FileOutputStream("文件路徑"), format); // 替換文件路徑為實際保存的路徑
writer.write(document);
writer.close();
或者直接輸出到控制臺:
OutputFormat format = OutputFormat.createPrettyPrint(); // 創建格式化輸出
XMLWriter writer = new XMLWriter(System.out, format);
writer.write(document);
writer.close();
完整示例代碼如下:
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class ModifyXML {
public static void main(String[] args) {
try {
// 加載xml文件并獲取根節點
Document document = DocumentHelper.parseText("<root><node>原始內容</node></root>"); // 或者使用DocumentHelper.parseText(xmlString)加載字符串形式的xml
Element root = document.getRootElement();
// 使用XPath表達式或遍歷方式找到要修改的節點,并修改其內容
Element node = (Element) document.selectSingleNode("//node"); // 替換節點路徑為實際的路徑
node.setText("新的內容"); // 替換新的內容為實際要修改的內容
// 將修改后的xml保存到文件或輸出到控制臺
OutputFormat format = OutputFormat.createPrettyPrint(); // 創建格式化輸出
XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream("test.xml"), "UTF-8"), format); // 替換文件路徑為實際保存的路徑
writer.write(document);
writer.close();
} catch (DocumentException | IOException e) {
e.printStackTrace();
}
}
}
以上代碼將會修改節點內容為"新的內容",并保存到名為"test.xml"的文件中。