使用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"的文件中。