maven项目下面的一个dom4j的简单应用

本文介绍使用DOM4J库解析XML文件的过程及方法。包括搭建环境、添加资源文件夹、导入jar包,并通过示例代码展示如何读取XML元素、属性及文本内容。

实习看代码,但是发现代码中用到的dom4j以前没用过,被师傅一阵鄙视。。。所以,直接建了工程做简单的测试。

过程如下:

下一步别点”create a simple...."

next 到下图,添加项目信息


找到建好的项目发现没有resources文件夹,默认不建立,需要自己手动来

在src/main/java上鼠标右击 new -> source floder,输入“resuorces"

然后就建好了,test下的resources也一样。


导入jar包:


pom文件中加入依赖:

  <dependency>

    <groupId>dom4j</groupId>

    <artifactId>dom4j</artifactId>

    <version>1.1</version>

然后:项目右击->maven->update project..即可导入dom4jar

我们的测试文件如下:

内容:

<?xml version="1.0" encoding="UTF-8"?>

<mods id = "123"  name = "name">

<mod>mod1</mod>

<mod>mod2</mod>

<mod>mod3</mod>

<m id = "234">

<m1>m11</m1>

<m1>m12</m1>

<m1>m13</m1>

</m>

</mods>

然后在src/main/java下面新建类:

packagedom4;

 

importjava.io.File;

importjava.io.FileInputStream;

importjava.io.InputStream;

 

 

 

importjava.net.MalformedURLException;

importjava.util.Iterator;

 

importorg.dom4j.Attribute;

importorg.dom4j.Document;

importorg.dom4j.DocumentException;

importorg.dom4j.Element;

importorg.dom4j.io.SAXReader;

 

publicclass DomTest {

        

         public void init() throws Exception{

                  

                   try {

                            SAXReader saxReader= new SAXReader();

                            //InputStreaminputStream = this.getClass().getResourceAsStream("/mod.xml");

                            Document document =saxReader.read("D:/workspace/dom4/src/main/resources/mods.xml");

                           

                            Element rootElement= document.getRootElement();

                            traceChild(rootElement);

                            traceAttributes(rootElement);

                            traceNodeName(rootElement,"mod");

                            System.out.println("根节点名称:"+rootElement.getName());

                            System.out.println("attributesof root "+ rootElement.attributeCount());

                            System.out.println("idvalue "+ rootElement.attributeValue("id"));

                            System.out.println("根节点内文本"+rootElement.getTextTrim());

                            System.out.println("根节点内文本(1):"+rootElement.getTextTrim());//去掉的是标签与标签之间的tab键和换行符等等,不是内容前后的空格  

                            System.out.println("根节点子节点文本内容:"+rootElement.getStringValue());

                            Element element =rootElement.element("mod");

                            System.out.println("mod" + element.getText());

                            Element element2 =rootElement.element("m");

                            System.out.println("m" + element2.getTextTrim());

                            traceChild(element2);

                           

                   } catch (Exception e) {

                            // TODO Auto-generatedcatch block

                            e.printStackTrace();

                   }

                  

         }

        

         public void traceChild(Element root){

                   System.out.println("printchildren:");

                   for ( Iterator i =root.elementIterator(); i.hasNext(); ) {

                            Element element =(Element) i.next();

                            System.out.print(element.getTextTrim()+"");

                            }

                   System.out.println();

         }

        

         public void traceNodeName(Element root,String name){

                   System.out.println("printnodeNames:");

                   for ( Iterator i =root.elementIterator(name); i.hasNext();) {

                            Element foo =(Element) i.next();

                            System.out.print(foo.getText()+"");;

                            }

                   System.out.println();

         }

        

         public void traceAttributes(Elementroot){

                   System.out.println("printattributes:");

                   for ( Iterator i =root.attributeIterator(); i.hasNext(); ) {

                            Attribute attribute= (Attribute) i.next();

                            System.out.print(attribute.getText()+" ");

                            }

                   System.out.println();

         }

         public static void main(String[] args){

                   // TODO Auto-generated methodstub

                   DomTest d = new DomTest();

                   try {

                            d.init();

                   } catch (Exception e) {

                            // TODOAuto-generated catch block

                            e.printStackTrace();

                   }

         }

 

}

 

执行结果如下:

print children:

mod1 mod2 mod3 

print attributes:

123 name

print nodeNames:

mod1 mod2 mod3

根节点名称:mods

attributes of root2

id value 123

根节点内文本

根节点内文本(1):

根节点子节点文本内容:

mod1

mod2

mod3

 

m11

m12

m13

 

 

mod mod1

m

print children:

m11 m12 m13


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值