本人需要解析一种类似xml格式的文件(和xml格式非常类似):
<module Version="2.2.2">
  <detail>
    <name>&MODULE_NAME;</name>
    <description>&WIDGET_DESCRIPTION;</description>
    <icon>hello.png</icon>
    <version>2.2.2</version>
    <author>ZL</author>
  </detail>
</module>但是这种格式的文件里面可以引用自定义的变量,如上面的MODULE_NAME, 一个自定义的变量用&   ; 来标识。
我现在用jdom进行解析,一碰到&  ;就报错:
The entity "MODULE_NAME" was referenced, but not declared.
我查了一下,好像是说&是xml的特殊字符,从而导致jdom组件不能正常解析。
我现在就想把&MODULE_NAME;整个拿出来,然后取得变量名MODULE_NAME,然后再到另一个文件里面根据变量名取出这个值然后存进数据库。
    现在jdom不能解析就没招了,请教各位大虾有没有什么好方法,最好不要自己写解析代码,能利用现在比较成熟的组件来完成。谢谢!!!!!!!!

解决方案 »

  1.   

    这个xml的格式不能改吗?
    因为本身这个xml文件就是错误的,不符合xml规范。
      

  2.   

    XML中有些字符是要替换的,&的替换是&amp;
    所以你要把这行
    <description>&WIDGET_DESCRIPTION;</description> 写成:
    <description>&amp;WIDGET_DESCRIPTION;</description>
      

  3.   

    谢谢上面两位的回答。这是别家公司提供的配置文件,格式改不了,而且最好能够不去改动配置文件了 。在jdom里面能不能自己定义实体类型,比如把&  ;作为一个实体类型,让jdom去匹配呢? 
      

  4.   

    其实你可以这样,如果你的文件不需要改动的话,你可以先读成文本文件,然后把 &sss; 改成另一种形式,比如 ${sss},另存为 xml文件, 这样之后再读新文件,后面你就可以进行操作了
      

  5.   

    <script>
    <![CDATA[
    function matchwo(a,b)
    {
    if (a < b && a < 0) then
    {
    return 1
    }
    else
    {
    return 0
    }
    }
    ]]>
    </script>
    加上CDATA试下