dom4j操作XML

xiaozejun 2009-08-09 11:51:50
最进在做一个电能量在先监测采集系统 在每隔15分钟循环采集数据并写入到xml的时候出问题了

第一次我用dom4j生成了一个xml文件
格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<querys>
<query number="1">
<GATHERID>G864</GATHERID>
<DDATE>2009-08-09 11:25</DDATE>
<PFLAT>0.0</PFLAT>
<PTINE>0.0</PTINE>
<PAPEX>0.65</PAPEX>
<PVALE>0.0</PVALE>
<NPFLAT>0.0</NPFLAT>
<NPTINE>0.0</NPTINE>
<NPAPEX>0.0</NPAPEX>
<NPVALE>0.0</NPVALE>
</query>
</querys>

而后面第二次,第三次。。。。循环的时候怎么增加数据呢?
就是我现在想读取这个xml文件 然后增加节点query
我在Java中每循环一次 就增加一个query的节点 我用dom4j怎么操作呢?
最最后效果要这样子(数据除了number,其他不要管)

<?xml version="1.0" encoding="UTF-8"?>
<querys>
<query number="1">
<GATHERID>G800</GATHERID>
<DDATE>2009-08-07 13:45</DDATE>
<PFLAT>300.78</PFLAT>
<PTINE>390.37</PTINE>
<PAPEX>335.92</PAPEX>
<PVALE>329.73</PVALE>
<NPFLAT>99.51</NPFLAT>
<NPTINE>78.50</NPTINE>
<NPAPEX>138.20</NPAPEX>
<NPVALE>150.11</NPVALE>
</query>
<query number="2">
<GATHERID>G800</GATHERID>
<DDATE>2009-08-07 14:00</DDATE>
<PFLAT>300.78</PFLAT>
<PTINE>390.37</PTINE>
<PAPEX>335.92</PAPEX>
<PVALE>329.73</PVALE>
<NPFLAT>99.51</NPFLAT>
<NPTINE>78.50</NPTINE>
<NPAPEX>138.20</NPAPEX>
<NPVALE>150.11</NPVALE>
</query>
<query number="3">
<GATHERID>G800</GATHERID>
<DDATE>2009-08-07 14:15</DDATE>
<PFLAT>300.78</PFLAT>
<PTINE>390.37</PTINE>
<PAPEX>335.92</PAPEX>
<PVALE>329.73</PVALE>
<NPFLAT>99.51</NPFLAT>
<NPTINE>78.50</NPTINE>
<NPAPEX>138.20</NPAPEX>
<NPVALE>150.11</NPVALE>
</query>
<query number="4">
<GATHERID>G800</GATHERID>
<DDATE>2009-08-07 14:30</DDATE>
<PFLAT>300.78</PFLAT>
<PTINE>390.37</PTINE>
<PAPEX>335.92</PAPEX>
<PVALE>329.73</PVALE>
<NPFLAT>99.51</NPFLAT>
<NPTINE>78.50</NPTINE>
<NPAPEX>138.20</NPAPEX>
<NPVALE>150.11</NPVALE>
</query>
<query number="5">
<GATHERID>G800</GATHERID>
<DDATE>2009-08-07 14:45</DDATE>
<PFLAT>300.78</PFLAT>
<PTINE>390.37</PTINE>
<PAPEX>335.92</PAPEX>
<PVALE>329.73</PVALE>
<NPFLAT>99.51</NPFLAT>
<NPTINE>78.50</NPTINE>
<NPAPEX>138.20</NPAPEX>
<NPVALE>150.11</NPVALE>
</query>
<query number="6">
<GATHERID>G800</GATHERID>
<DDATE>2009-08-07 15:00</DDATE>
<PFLAT>300.78</PFLAT>
<PTINE>390.37</PTINE>
<PAPEX>335.92</PAPEX>
<PVALE>329.73</PVALE>
<NPFLAT>99.51</NPFLAT>
<NPTINE>78.50</NPTINE>
<NPAPEX>138.20</NPAPEX>
<NPVALE>150.11</NPVALE>
</query>
<query number="7">
<GATHERID>G800</GATHERID>
<DDATE>2009-08-07 15:15</DDATE>
<PFLAT>300.78</PFLAT>
<PTINE>390.37</PTINE>
<PAPEX>335.92</PAPEX>
<PVALE>329.73</PVALE>
<NPFLAT>99.51</NPFLAT>
<NPTINE>78.50</NPTINE>
<NPAPEX>138.20</NPAPEX>
<NPVALE>150.11</NPVALE>
</query>
<query number="8">
<GATHERID>G800</GATHERID>
<DDATE>2009-08-07 15:30</DDATE>
<PFLAT>300.78</PFLAT>
<PTINE>390.37</PTINE>
<PAPEX>335.92</PAPEX>
<PVALE>329.73</PVALE>
<NPFLAT>99.51</NPFLAT>
<NPTINE>78.50</NPTINE>
<NPAPEX>138.20</NPAPEX>
<NPVALE>150.11</NPVALE>
</query>
<query number="9">
<GATHERID>G800</GATHERID>
<DDATE>2009-08-07 15:45</DDATE>
<PFLAT>300.78</PFLAT>
<PTINE>390.37</PTINE>
<PAPEX>335.92</PAPEX>
<PVALE>329.73</PVALE>
<NPFLAT>99.51</NPFLAT>
<NPTINE>78.50</NPTINE>
<NPAPEX>138.20</NPAPEX>
<NPVALE>150.11</NPVALE>
</query>
</querys>

请大哥 大姐们指教一下 麻烦讲解的详细一点
...全文
338 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
该用户很勤劳 2011-09-14
  • 打赏
  • 举报
回复
顶,很好很强大
折腾的蜗牛 2010-01-30
  • 打赏
  • 举报
回复
我也在遇到 这个问题刚
jinxfei 2009-08-09
  • 打赏
  • 举报
回复
每次用DOM4J解析XML后,得到的document,然后通过document.getRootElement(精确的方法名自己查一下)拿到根节点,也就是querys,然后在这个节点下增加子节点就ok,根第一次没什么差异啊。
xiaozejun 2009-08-09
  • 打赏
  • 举报
回复
3楼的哥们谢了啊 我自己在API里面找到了一个好办法
先获取xml文件里面的根节点 然后可以直接添加子节点
谢谢啦 给你80分
那四楼的帮顶的那一位也给你20分辛苦分
xiaozejun 2009-08-09
  • 打赏
  • 举报
回复
我现在用的是dom4j 数据量不是很大 (上面要求用dom4j)
这个只是保存一天的数据而已
也才96条数据
你的意思是 获取最大的那个number值 然后就用number+1 生成一条数据 在用这一条数据替代最后的
</querys>
这样可以替换吗 我对dom4j不是很熟 替换的时候是不是在这个xml文件中查找到</querys>
然后用我的新数据替换 是吗 但是我觉得这样很麻烦啊 我还涉及到一些数据计算的问题
还有什么其他简单的好办法吗 麻烦你说的详细一点 谢谢
blliy117 2009-08-09
  • 打赏
  • 举报
回复
我写这类简单的xml,几乎都不用这些解析器,希望有更好的方法,
以上的方法可以对付比较大的文件,注意dom4j对付大文件是很吃力的。
dcjz 2009-08-09
  • 打赏
  • 举报
回复
路过帮顶。。。
blliy117 2009-08-09
  • 打赏
  • 举报
回复
数据量大的时候最好不要用dom4j,可以用xpath
而且你的xml结构相对简单。
也可以不用xml解析工具,
看你的这个数据有规则
可以根据格式直接按流的方法来做,

1,先读取最后一个 <query number="x"> 取出x的值
2,生成


<query number="9">
<GATHERID>G800</GATHERID>
<DDATE>2009-08-07 15:45</DDATE>
<PFLAT>300.78</PFLAT>
<PTINE>390.37</PTINE>
<PAPEX>335.92</PAPEX>
<PVALE>329.73</PVALE>
<NPFLAT>99.51</NPFLAT>
<NPTINE>78.50</NPTINE>
<NPAPEX>138.20</NPAPEX>
<NPVALE>150.11</NPVALE>
</query>
</querys>



来替换</querys>
保存就可以了


具体
xiaozejun 2009-08-09
  • 打赏
  • 举报
回复
没人来 我自己过来顶
islandrabbit 2009-08-09
  • 打赏
  • 举报
回复
学习
muyangk 2009-08-09
  • 打赏
  • 举报
回复
真不错,顶了
blliy117 2009-08-09
  • 打赏
  • 举报
回复
我刚吃完饭回来你就结贴了,呵呵
还是那句话,
注意dom4j的性能。

真厚道啊

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧