Java解析和修改xml文件

来源:互联网 发布:unity3d encodetojpg 编辑:程序博客网 时间:2024/06/07 14:02

初到公司被解析xml难倒了,有几个关注点,值得分析一下。

首先,xml的文件路径问题。其次,xml的读写工具。最后,就是修改xml了。不管使用什么样的解析方式,其思路都一样,无外乎根据路径获得xml文件,在使用dom4j或者读文件的形式来获取xml文件里的内容,接着在将修改之后的东西写入到xml文件中。在这里注意,如果你要修改xml,就必须把你修改的document,写入到xml中,否则xml文件中的属性值还是不变的,鄙人就碰到这个问题,document能修改,但是就是xml文件值不变,所以一定要写入进去。那么下面谈谈这几个方法的使用。

1、怎样获取xml文件的路径?

         笔者认为获取xml文件分为两种,第一种就是获取本地指定盘符下的文件比如说d:/struts.xml。另一种就是获取项目路径下的文件,这种文件一般获取的路径都是在tomcat/webapps/项目名/web-inf/classes/某个文件夹/demo.xml。

         第一种很简单使用file流直接读取盘符路径就可以了,现在说一下读取第二种方式下的xml文件。

         熟知JavaAPI的人知道在JavaAPI中给出了获取路径的方法:

        String path = new ParseEventConfig().getClass().getResource(path).getPath().replace("%20", " ");//ParseEventConfig指的是当前类

        DUBEG模式下,我们可以发现path的路径为file\d:\java\tomcat\webapps\DemoProject\web-inf\classes\config\demo.xml,这个就是我们想要的路径。


2、怎样读取xml文件?

   使用dom4j去解析xml是比较好的,也是比较成熟的技术,使用dom4j必然会使用document工厂创建document来获取xml中的文件。我先晒一下我的xml文件吧。

        

    可以看出来,我的xml相对来说层次比较少,但是我的这种方式无论什么层次,都可以一直往下写,就比如:wifi-onlineStation-ping/sycle,这种写法用下面的方法就能获取。

    由于使用document所以需要首先创建一个document。

    第一步:创建document


    上面是根据路径来创建document。

    第二步:根据document来读取xml文件,这里的xml文件是跟这个工具类在同一级目录下的,如果你在其它目录下,可以自行调整或者根据相对路径.额,为了一屏能截下,我将一些内容删了,下面的wifi-regionalBlock-width跟上面xml文件中的wifi-dataManager-core是同一层的。

   

    这里调用了第一步里面的创建document的方法,这里是调用第一层节点。下面是读取第二层节点。

   

   其他的都跟上面的那个一样。


3、怎样修改xml文件?

   修改xml文件的步骤:一,读取xml文件放入document中。二,对document中的指定属性值内容进行修改。三,将document写入到xml中。

     

     将修改之后的xml文件写入到指定文件下的方法

    

    这样就完成了对xml内容的修改了。当然还用一种情况就是修改标签内的属性的值,而不是文本的值,这个在网上有很多,我就不赘述了。

此外还碰到一个蛋疼的问题,由于我修改的是tomcat/webapps/项目/WEB-INF/classes/config/config.xml文件每次修改xml文件的时候都会重新加载,这可如何是好,不能让用户修改一个字段,然后就全部重新加载了吧。页面就相当于重新启动了tomcat一般。后来经高人指点,需要在eclipse左侧的server文件夹中修改一下server.xml将重新加载改为false即可

<Context docBase="MonitorWeb" path="/MonitorWeb" reloadable="false" source="org.eclipse.jst.jee.server:MonitorWeb"/>问题解决。


           每天一个进步!

                                                                                  -----------------------不醉怎能入睡(2014年10月31日10:09:13)

0 0