1、检查是否b8以上版本;
2、检查Classpath中是否存在多个jdom的jar文件,新旧版本冲突。

解决方案 »

  1.   

    jdom 9.0Classpath中是只有一个jdom的jar
      

  2.   

    to wangwenyou(王文友) 听友人说jdom还没有实现这个功能不知道是不只真的?
      

  3.   

    to Debian(乌鱼子) 你可以Demo一个吗?我用的时候出了点问题,谢谢
      

  4.   

    www.jdom.org
    下一个beta 9 。它含有
    import org.jdom.*;
    import org.jdom.adapters.*;
    import org.jdom.filter.*;
    import org.jdom.input.*;
    import org.jdom.output.*;
    import org.jdom.transform.*;
    import org.jdom.xpath.*;顺便问一下
    private static Document doc = null;
     public static void prepareDoc(String fileName) {
       try{
         //create the JDOM SAXBuilder
         SAXBuilder saxBuilder = new SAXBuilder (true);
         //prepare the JDOM tree
         doc = saxBuilder.build (new File(fileName));
       } catch (JDOMException e) {
         System.out.println ("JDOMException: " + e.getMessage());
       } catch (IOException e) {
         System.out.println ("IOException: " + e.getMessage());
       } catch (Exception e) {
         System.out.println ("Exception: " + e.getMessage());
       }
     }
    SAXBuilder 强制要求要有dtd吗?
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE CONFIGURATIONS SYSTEM ".\CONFIG.dtd"><!-----要是没有这句,就会有错误---->
    <CONFIGURATIONS>
    <CONFIG>
    <DRIVERNAME>com.microsoft.jdbc.sqlserver.SQLServerDriver</DRIVERNAME>
    </CONFIG>
    </CONFIGURATIONS>
    =============================================================================
    JDOMException: Error on line 3 of document file:/e:/xxx/config.xml: Document is
    invalid: no grammar found.
    Exception in thread "main" java.lang.NullPointerException
           at com.bcstnet.enterprise.beans.XmlSetting.forTest(XmlSetting.java:44)
           at com.bcstnet.enterprise.beans.XmlSetting.main(XmlSetting.java:24)  
      

  5.   

    如果有那句dtd的限制
    正常 输 出为
    e:\\xxx\\config.xml
    [[Text: com.microsoft.jdbc.sqlserver.SQLServerDriver]]
    Press any key to continue...
      

  6.   

    doc.getRootElement().getChild("CONFIG").getChild("DRIVERNAME").setText(new String("com.microsoft.jdbc.sqlserver.SQLServerDriver1"));
    还有,为什么,我这句不能更改节点内容?
    怎么处理?
      

  7.   

    你必须写回xml文件      String a = "";
          boolean bool = true;
          org.jdom.output.XMLOutputter xml = new org.jdom.output.XMLOutputter(a,
              bool, "UTF-8");
          xml.output(doc, new FileOutputStream(filename));
      

  8.   

    你必须写回xml文件      String a = "";
          boolean bool = true;
          org.jdom.output.XMLOutputter xml = new org.jdom.output.XMLOutputter(a,
              bool, "UTF-8");
          xml.output(doc, new FileOutputStream(filename));
      

  9.   

    你必须写回xml文件      String a = "";
          boolean bool = true;
          org.jdom.output.XMLOutputter xml = new org.jdom.output.XMLOutputter(a,
              bool, "UTF-8");
          xml.output(doc, new FileOutputStream(filename));
      

  10.   

    SAXBuilder有个set方法用来设置解析时是否校验dtd,具体查api。
    我猜以下的true可能也是这个含义,改成false试试。
    SAXBuilder saxBuilder = new SAXBuilder (true);
      

  11.   

    错了,把SAXBuilder (true)参数去掉是不验证dtd,如果有这个参数,不管是true还是false都会验证dtd是否存在
      

  12.   

    to楼上的
    不要误导啊,“不管是true还是false都会验证dtd是否存在”,那这个作者不是太菜了。
    查了一下源码,true是要验证,false和不传参数是不验证。不过jdom在解析XML时是采用其它的XML解析器,如果该解析器不支持验证DTD,那么参数为true解析时可能会抛出不支持异常。如果没有指定XML解析器,将默认使用xerce,它是支持DTD验证的。
    good luck.
      

  13.   

    beta 9 版中已经有了xpath,但要想用xpath你必须在lib下的那个包也加到你的工程的类路径中,仅仅一个jdom.jar是不够的。
      

  14.   

    to Debian:
        其实你是非常正确的,不过我的意思也没错,有点偏差,我说的验证是指验证XML是否符合DTD,你是指是否验证:)
        综合来讲:   如果XML中指定了DTD文档,若参数为空,不会去验证DTD是否存在或语法正确,如果参数非空,都会先验证DTD是否存在、语法是否正确。如果DTD语法正确了,参数为空或false,xml不符合DTD照样解析,若为true,xml必须符合DTD定义。
      

  15.   

    嗨,我说错了,Debian也是错的。 
    没有参数跟false是一样的,看一下源码就清楚了,默认为false。不管有没有参数,只要xml中指定了dtd,都会去验证该dtd文件是否存在,语法是否正确。如果DTD正确了,参数true和false才是表示是否验证xml符合dtd定义。
      

  16.   

    我下载了2进制包,确实是你说的那样,难道是我用的cvs有问题原因?