最近因为项目的需要,需要解析xml。本人在xml这方面完全是个菜鸟,有哪位大虾给予帮助,感激不尽,分数多多
本人的要求如下:
有一个.xml文件:
<modes>
<line id="1">
<cell x="1" value=""/>
<cell x="2" value=""/>
<cell x="3" value=""/>
<cell x="4" cols="14" style="label" value="AAAAAAAAAAAAAAAAAAAAAAAAAAAAA">
<font>宋体;B;12</font>
</cell>
<cell x="18" value=""/>
<cell x="19" value=""/>
<cell x="20" value=""/>
</line>
<line id="2">
<cell x="1" value=""/>
<cell x="2" value=""/>
<cell x="3" value=""/>
<cell x="4" value=""/>
<cell x="5" value=""/>
<cell x="6" value=""/>
<cell x="7" value=""/>
<cell x="8" value=""/>
<cell x="9" value=""/>
<cell x="10" value=""/>
<cell x="11" value=""/>
<cell x="12" value=""/>
<cell x="13" value=""/>
<cell x="14" value=""/>
<cell x="15" cols="6" style="label" value="AAAAAAAAAAA"/>
</line>
<line id="3">
<cell x="1" value=""/>
<cell x="2" cols="5" style="label" value="AAAA"/>
<cell x="7" cols="5" style="text" class="string" value="AAAA" ref="1"/>
<cell x="12" value=""/>
<cell x="13" value=""/>
<cell x="14" value=""/>
<cell x="15" cols="6" style="label" value="SSSSSSSSS"/>
</line>
<line id="4">
<cell x="1" value=""/>
<cell x="2" value=""/>
<cell x="3" value=""/>
<cell x="4" value=""/>
<cell x="5" value=""/>
<cell x="6" cols="6" style="label" value="CCCCC" lb="1" tb="1" rb="1" bb="1"/>
<cell x="12" cols="2" style="label" value="XXXXXX" lb="1" tb="1" rb="1" bb="1"/>
<cell x="14" style="label" value="XXX" lb="1" tb="1" rb="1" bb="1"/>
<cell x="15" cols="2" style="label" value="XXXXXX" lb="1" tb="1" rb="1" bb="1"/>
<cell x="17" value=""/>
<cell x="18" value=""/>
<cell x="19" value=""/>
<cell x="20" value=""/>
</line>
<line id="5">
<cell x="1" value=""/>
<cell x="2" value=""/>
<cell x="3" value=""/>
<cell x="4" value=""/>
<cell x="5" value=""/>
<cell x="6" cols="6" style="label" value="XXXXX" lb="1" tb="1" rb="1" bb="1"/>
<cell x="12" cols="2" style="label" value="XXXXX" lb="1" tb="1" rb="1" bb="1"/>
<cell x="14" style="label" value="XXXXX" lb="1" tb="1" rb="1" bb="1"/>
<cell x="15" cols="2" style="text" value="XXXXX" lb="1" tb="1" rb="1" bb="1"/>
<cell x="17" value=""/>
<cell x="18" value=""/>
<cell x="19" value=""/>
<cell x="20" value=""/>
</line>
</modes>
希望利用dom4j将它转换成html片段,如下所示:
<tr>
<td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td> 
  <td colspan="14"><font  size="12" style="family:宋体;size:12;weight:B" >AAAAAAAAAAAAAAAAAAAAAAAAAAAAA</font></td>
  <td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td>
</tr>
<tr>
<td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td>
<td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td>
  <td colspan="6" >AAAAAAAAAAA</td>
</tr>
<tr>
<td>$nbsp;</td> 
  <td colspan="5" >AAAA</td>
  <td colspan="5"><input type="text" value="AAAA" class="string"></td>
  <td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td>
  <td colspan="5" >SSSSSSSSS</td>
</tr>
<tr>
<td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td>
<td colspan="6">CCCCC</td>
<td colspan="2">XXXXXX</td>
<td>XXX</td>
<td colspan="2">XXXXXX</td>
<td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td>
</tr>
<tr>
<td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td>
<td colspan="6">XXXXX</td>
<td colspan="2">XXXXX</td>
<td>XXXXX</td>
<td colspan="2"><input type="text" value="XXXXX"></td>
<td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td><td>$nbsp;</td>
</tr>
有哪位大虾可以帮帮我,最好有代码,思路也可以,在下感激不尽

解决方案 »

  1.   

      建议LZ去看一下dom4j的相关文档  先搞个简单的例子  熟悉了之后再慢慢调试...   估计你贴出来的也只是其中的一部分xml文件代码   所以 这xml里的东西规则性不是很强   你只能熟悉dom4j后根据具体需求去编写相应的方法...
      

  2.   

    你最好为你的xml文件写一个XMLschema,使用xpath,xsl可以很容易转换,建议看一下这方面的资料。
      

  3.   

    因为我们有很多这种.xml文档,就是想弄一个解析的方法,通过解析,可以得到相应的html片段。
    说白了,就是想弄一个一劳永逸的方法
    我知道用xsl可以,但是那样,需要为每一个xml文档都写一个xsl文件,那样就很麻烦
    原来想可以用dtd来辅助做,但是好像dtd只是辅助检测的,
    有没有什么好的方法可以推荐
      

  4.   

    我知道用xsl可以,但是那样,需要为每一个xml文档都写一个xsl文件,那样就很麻烦 
    这个似乎不是这样的吧,只要满足某个 schema, 基本上都可以使用 同一个 xsl吧
      

  5.   

    用 dom4j 解析难度也不大, 不过你可以考虑 java xml 绑定
      

  6.   

    因为在xml方面我完全是个菜鸟,请问java xml绑定是什么?
    是用对象的思想解析xml?
      

  7.   

    java 对象与 xml 之间互相转化 caster 好像有这个功能,不过我觉得如果就一个这个文件的话,你还是直接用 dom4j 吧, 一天时间,差不多了因为你只需要知道怎么读结点, 怎么找子结点,然后怎么写结点, 
      

  8.   

    现在我已经能实现基本的xml解析,可以输出简单的html表格形式。
    新的问题又出现了,我的xml里面的数据要从数据库提取,我的数据库使用hibernate操作的,有没有什么好的方法,将数据插入到xml文档中?
      

  9.   

    也许是我说的不明白,我的意思是:我生成的html表格,每个表格都有一个ID。在数据库中也有一个表,每一个ID对应一个name,我要把name提取出来,放到相应ID的那<td>标签中
    这样说可以吗?
      

  10.   

    ....你是打算分一步做,直接从数据库转为 html 还是打算分两步做? 把 数据库--> xml--->html?前者的话,我觉得就是些循环罢了, 后者的话,直接解析,然后再插入值不就可以了吗?
      

  11.   

    打比方,你可以解析到  <line id="1">  你就直接转成 <tr id="1">不就可以了吗?
    你从数据库的表的 id 可以解析到吗?那你就放到 td 的标签中呗,如果两个是同步的,即在解析 xml 时还要从数据库中取值,我想可能要用个 map<id, name> 然后在生成 html时,从 map 中取值了
      

  12.   

    谢谢各位,尤其是laorer
    我的问题基本解决了,就剩下完善的问题。
    大家多交流