DOM4J读取XML
依赖的jar包:
dom4j-1.6.1.jar 和 jaxen-1.1.6.jar
实现读取XML元素和添加元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | package cn.test; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.junit.Test; /** * 需要两个jar包 * dom4j-1.6.1.jar-306 KB * jaxen-1.1-beta-6.jar * @author zy * */ public class Dom4jTest { @Test public void readXML(){ String path = "D:/Temp/users.xml" ; //创建解析器 SAXReader reader = new SAXReader(); try { //得到document Document doc = reader.read(path); //通过xpath查询得到Element Element ele = (Element) doc.selectSingleNode( "//user[@username='scott']" ); //获取该元素的名为username的属性值 String username = ele.attributeValue( "username" ); String password = ele.attributeValue( "password" ); System.out.println(username+ "," +password); } catch (DocumentException e) { e.printStackTrace(); } } @Test public void writeXML(){ String path = "D:/Temp/users.xml" ; //创建解析器 SAXReader reader = new SAXReader(); try { //得到document Document doc = reader.read(path); //得到根元素 Element root = doc.getRootElement(); //通过根元素创建新元素user Element userEle = root.addElement( "user" ); //为userEle设置属性 userEle.addAttribute( "username" , "scott" ); userEle.addAttribute( "password" , "tiger" ); //设置文档格式,使用\t缩进,使用换行 OutputFormat format = new OutputFormat( "\t" , true ); //删除原来已有的文档的缩进和换行 format.setTrimText( true ); //创建XMLWriter XMLWriter writer; try { writer = new XMLWriter( new OutputStreamWriter( new FileOutputStream(path), "utf-8" ),format); //保存document对象 writer.write(doc); writer.close(); } catch (Exception e) { e.printStackTrace(); } } catch (DocumentException e) { e.printStackTrace(); } } } |
xml
1 2 3 4 5 | <?xml version= "1.0" encoding= "UTF-8" ?> <users> <user username= "scott" password= "tiger" /> </users> |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了