Dom4j的使用方法主要包括以下几个方面:
一、导入Dom4j库
- 在Java项目中添加依赖
- 如果使用Maven构建项目,在
pom.xml文件中添加Dom4j的依赖:
<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>2.1.3</version> </dependency>- 如果是普通的Java项目(非Maven),需要下载Dom4j的JAR包,并将其添加到项目的类路径中。
- 如果使用Maven构建项目,在
二、解析XML文档
- 使用SAXReader解析
- 创建
SAXReader对象,然后调用其read方法来解析XML文件。 - 示例代码:
import org.dom4j.Document; import org.dom4j.io.SAXReader; public class Dom4jParseExample { public static void main(String[] args) { try { SAXReader reader = new SAXReader(); Document document = reader.read(new File("example.xml")); // 后续操作基于document对象 } catch (Exception e) { e.printStackTrace(); } } }- 这里的
example.xml是要解析的XML文件。
- 创建
三、操作XML文档结构
- 获取根元素
- 解析得到
Document对象后,可以通过getRootElement方法获取XML的根元素。 - 例如:
Element root = document.getRootElement(); - 解析得到
- 遍历元素和属性
- 遍历子元素可以使用
elements()方法得到子元素列表,然后进行循环操作。 - 对于属性,可以使用
attribute()或attributes()方法获取单个或多个属性的值。 - 示例:
将上述xml文件中的painting读出并放入 List中,代码如下:<root> <painting id="1"> <pname>古典油画1</pname> <category>1</category> <price>23800</price> <preview>/upload/1.jpg</preview> <description>古典油画1的描述文本</description> </painting> <painting id="2"> <pname>古典油画2</pname> <category>2</category> <price>53800</price> <preview>/upload/2.jpg</preview> <description>古典油画2的描述文本</description> </painting> </root>xmlPath = XmlDataSource.class.getResource("/painting.xml").getPath();//获取xml文件路径,该xml放置于src/main/java下 List<Painting> data = new ArrayList<Painting>(); try { xmlPath = URLDecoder.decode(xmlPath, "UTF-8"); SAXReader reader = new SAXReader(); Document document = reader.read(new File(xmlPath)); Element root = document.getRootElement();//获取根节点 List<Element> subElements = root.elements();//获取根节点下所有子元素,即painting 节点 for (Element subElement : subElements) { String id = subElement.attributeValue("id");//获取painting 标签的id属性 String name = subElement.element("pname").getText();//获取painting 节点下pname标签的文本 String category = subElement.element("category").getText();//获取painting 节点下category标签的文本 String price = subElement.element("price").getText();//获取painting 节点下price标签的文本 String preview = subElement.element("preview").getText();//获取painting 节点下preview标签的文本 String description = subElement.element("description").getText();//获取painting 节点下description标签的文本 Painting p = new Painting(); p.setId(Integer.parseInt(id)); p.setName(name); p.setCategroy(Integer.parseInt(category)); p.setPrice(Integer.parseInt(price)); p.setPreview(preview); p.setDescription(description); data.add(p); } } catch (Exception e) { e.printStackTrace(); } - 遍历子元素可以使用
四、修改XML文档
- 修改元素和属性值
- 可以直接通过
Element和Attribute对象的方法来修改值。 - 如
subElement.setText("new value");修改元素的文本内容,attribute.setValue("new id value");修改属性的值。
- 可以直接通过
- 添加和删除元素与属性
- 使用
addElement方法添加子元素,removeAttribute方法删除属性等。 - 例如:
Element newElement = root.addElement("newChild"); newElement.addAttribute("newAttr", "attrValue"); Attribute oldAttr = subElement.attribute("oldAttr"); if (oldAttr!= null) { subElement.removeAttribute(oldAttr); } - 使用
五、生成XML文档
- 创建Document对象并构建元素结构
- 先创建
Document对象,然后逐步添加根元素和子元素等。 - 示例:
Document document = DocumentHelper.createDocument(); Element root = document.addElement("root"); Element child = root.addElement("child"); child.setText("text content"); - 先创建
- 输出XML文档
- 可以使用
XMLWriter将Document对象输出为XML文件或者字符串等形式。 - 如:
try { XMLWriter writer = new XMLWriter(new FileWriter("output.xml")); writer.write(document); writer.close(); } catch (Exception e) { e.printStackTrace(); } - 可以使用


4766

被折叠的 条评论
为什么被折叠?



