Dom4j的使用

Dom4j的使用方法主要包括以下几个方面:

一、导入Dom4j库

  1. 在Java项目中添加依赖
    • 如果使用Maven构建项目,在pom.xml文件中添加Dom4j的依赖:
    <dependency>
        <groupId>dom4j</groupId>
        <artifactId>dom4j</artifactId>
        <version>2.1.3</version>
    </dependency>
    
    • 如果是普通的Java项目(非Maven),需要下载Dom4j的JAR包,并将其添加到项目的类路径中。

二、解析XML文档

  1. 使用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文档结构

  1. 获取根元素
    • 解析得到Document对象后,可以通过getRootElement方法获取XML的根元素。
    • 例如:
    Element root = document.getRootElement();
    
  2. 遍历元素和属性
    • 遍历子元素可以使用elements()方法得到子元素列表,然后进行循环操作。
    • 对于属性,可以使用attribute()attributes()方法获取单个或多个属性的值。
    • 示例:
    <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>
    
    将上述xml文件中的painting读出并放入 List中,代码如下:
     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文档

  1. 修改元素和属性值
    • 可以直接通过ElementAttribute对象的方法来修改值。
    • subElement.setText("new value");修改元素的文本内容,attribute.setValue("new id value");修改属性的值。
  2. 添加和删除元素与属性
    • 使用addElement方法添加子元素,removeAttribute方法删除属性等。
    • 例如:
    Element newElement = root.addElement("newChild");
    newElement.addAttribute("newAttr", "attrValue");
    Attribute oldAttr = subElement.attribute("oldAttr");
    if (oldAttr!= null) {
        subElement.removeAttribute(oldAttr);
    }
    

五、生成XML文档

  1. 创建Document对象并构建元素结构
    • 先创建Document对象,然后逐步添加根元素和子元素等。
    • 示例:
    Document document = DocumentHelper.createDocument();
    Element root = document.addElement("root");
    Element child = root.addElement("child");
    child.setText("text content");
    
  2. 输出XML文档
    • 可以使用XMLWriterDocument对象输出为XML文件或者字符串等形式。
    • 如:
    try {
        XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
        writer.write(document);
        writer.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值