`

jdom解析XML文件怪怪的问题

阅读更多
先贴出代码出来看看.
首先是一个Folders.xml文件:
<?xml version="1.0" encoding="gbk"?>
<Folders>
<Folder stepid="5" beginEid="1.0.0." endEid="8.0.0." folderId="88" folderName="文件夹一" />
<Folder stepid="5" beginEid="8.0.0." endEid="20.0.0." folderId="89" folderName="文件夹二" />
</Folders>

一下是解析XML文件的类.采用jdom解析.然后封装到一个Bean对象中.最后返回一个ArrayList集合.集合里面是一个个Bean对象.  XmlConfig.Java
package JdBudget.OuterWeb.Config;

import java.util.*;
import java.io.*;
import JdBudget.OuterWeb.bean.*;
import JdBudget.OuterWeb.bean.Folder;

import org.jdom.output.*;
import org.jdom.input.*;
import org.jdom.*;

/**
 * 操作xml的配置文件
 * ItemId是报表文件Id号,Variant是报表参数(不包括公用参数)
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */
public class XmlConfig {
  
  public XmlConfig(){}
  ArrayList dataList = null;
  //解析Folders.xml
  public ArrayList getFoldersInfo(String path) {
    dataList = new ArrayList();
    Folder dataValue = null;
    try {

      SAXBuilder builder = new SAXBuilder(false);
      Document read_doc = builder.build(new FileInputStream(path));
      Element root = read_doc.getRootElement();
      List Folders = root.getChildren("Folder");
      for (int i = 0; i < Folders.size(); i++) {
        Element e = (Element) Folders.get(i);
        dataValue = new Folder();
        dataValue.setFolderId(e.getAttributeValue("folderId"));
        dataValue.setEndEid(e.getAttributeValue("endEid"));
        dataValue.setBeginEid(e.getAttributeValue("beginEid"));
        dataValue.setStepid(e.getAttributeValue("stepid"));

        System.out.println(e.getAttributeValue("folderId"));
        System.out.println(e.getAttributeValue("folderName"));
        System.out.println(e.getAttributeValue("endEid"));
        System.out.println(e.getAttributeValue("beginEid"));
        System.out.println(e.getAttributeValue("stepid"));


        dataList.add(dataValue);
      }
    }
    catch (Exception dom) {
      System.out.println("getFoldersInfo Err" + dom.toString());
    }
    return dataList;

  }

  //解析Reports.xml
  public ArrayList getReportsInfo(String path) {
    dataList = new ArrayList();
    Report dataValue = null;
    try {
      SAXBuilder builder = new SAXBuilder(false);
      Document read_doc = builder.build(new FileInputStream(path));
      Element root = read_doc.getRootElement();
      List Reports = root.getChildren("Report");
      for (int i = 0; i < Reports.size(); i++) {
        Element e = (Element) Reports.get(i);
        dataValue = new Report();
        dataValue.setItemId(e.getAttributeValue("ItemId"));
        dataValue.setVariant(e.getAttributeValue("Variant"));
        dataValue.setType(e.getAttributeValue("Type"));
        dataList.add(dataValue);
      }
    }
    catch (Exception dom) {
      System.out.println("getReportsInfo Err" + dom.toString());
    }
    return dataList;

  }

  public static void main(String[] args){
    XmlConfig xmlconfig = new XmlConfig();
  File f = new File("");
  ArrayList list = new ArrayList();
  list = xmlconfig.getFoldersInfo(f.getAbsolutePath()+f.separator+"MultiReport"+f.separator+"config"+f.separator+"Folders.xml");

  }
}



我用XmlConfig.java文件中的main方法测试,能得到争取得解析结果 .
如:
88

文件夹一

8.0.0.

1.0.0.

5

89

文件夹二

20.0.0.

8.0.0.

5




但是当我在createreport.jsp里面调用执行
XmlConfig xConfig = new XmlConfig();

时程序就已经报错误.
错误描述如下:
D:\JBuilderX\jdk1.4\bin\javaw -classpath "D:\JBuilderX\thirdparty\jakarta-tomcat-4.0.6-LE-jdk14\bin\bootstrap.jar;D:\JBuilderX\jdk1.4\lib\tools.jar"  -Dcatalina.home="D:/JBuilderX/thirdparty/jakarta-tomcat-4.0.6-LE-jdk14"  org.apache.catalina.startup.Bootstrap -config E:\work\BatchPrint\MultiReport\Tomcat\conf\server8083.xml start 
HttpConnector Opening server socket on all host IP addresses

Starting service Tomcat-Standalone

Apache Tomcat/4.0.6

WebappLoader[/MultiReport]: Deploying class repositories to work directory E:\work\BatchPrint\MultiReport\Tomcat\work\MultiReport

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/activation.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\activation.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/axis-ant.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\axis-ant.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/axis.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\axis.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/classes12.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\classes12.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/commons-discovery.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\commons-discovery.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/commons-logging.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\commons-logging.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/jaxrpc.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\jaxrpc.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/junit.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\junit.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/log4j-1.2.8.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\log4j-1.2.8.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/mail.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\mail.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/saaj.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\saaj.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/unittest.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\unittest.jar

WebappLoader[/MultiReport]: Deploy JAR /WEB-INF/lib/wsdl4j.jar to E:\work\BatchPrint\MultiReport\MultiReport\WEB-INF\lib\wsdl4j.jar

WebappLoader[/MultiReport]: Reloading checks are enabled for this Context

StandardManager[/MultiReport]: Seeding random number generator class java.security.SecureRandom

StandardManager[/MultiReport]: Seeding of random number generator has been completed

ContextConfig[/MultiReport]: Added certificates -> request attribute Valve

StandardWrapper[/MultiReport:default]: Loading container servlet default

StandardWrapper[/MultiReport:invoker]: Loading container servlet invoker

HttpConnector[8083] Starting background thread

eid:3.

StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exception

javax.servlet.ServletException: org/jdom/input/SAXBuilder

javax.servlet.ServletException: org/jdom/input/SAXBuilder

	at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)

	at org.apache.jsp.createreport$jsp._jspService(createreport$jsp.java:400)

	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

	at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)

	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)

	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)

	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)

	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)

	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

	at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)

	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

	at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)

	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

	at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)

	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)

	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

	at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

	at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

	at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)

	at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)

	at java.lang.Thread.run(Thread.java:534)





在 main函数里面执行都可以返回正确得结果.现在怎么只是实例化XmlConfig类就报错误呢....
网上看到说时jdom的版本问题.我也在webspere的安装目录下面找到了103k的jdom包替换了原来143K的jdom安装包.现在问题仍然存在 ..
请看下,分析下..!
小弟很急..
谢谢..
分享到:
评论

相关推荐

    使用JDOM解析XML文件

    本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过Document对象表示整个XML文档,Element代表XML元素,Attribute表示元素属性,Text表示元素内的文本内容。这些类构成了...

    用jdom解析xml文件

    在这个例子中,我们将深入探讨如何使用JDOM解析XML文件,并进行遍历与构建。 首先,我们需要了解JDOM的基本概念。JDOM主要由三部分构成:SAXBuilder用于从XML源构建DOM树,Element代表XML文档的元素,Attribute代表...

    利用JDOM解析xml文件

    本篇文章将深入探讨如何利用JDOM解析XML文件,并基于XML中的类名生成相应的对象。 首先,我们需要理解JDOM的基本概念。JDOM提供了一组Java对象来表示XML文档,包括Element(元素)、Attribute(属性)、Text(文本...

    java 使用JDOM解析xml文件.docx

    * XML 配置文件解析 * 数据交换和 Integration * 文档管理和存储 JDOM 库是一个功能强大且灵活的 XML 解析库,能够满足各种 Java 项目的需求。 结语 本文详细介绍了如何使用 JDOM 库解析 XML 文件,并讨论了 JDOM...

    jdom解析xml文件

    **JDOM解析XML文件** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java中,JDOM(Java Document Object Model)是一个流行的选择来解析和操作...

    java利用jdom解析xml文件

    本篇文章将深入探讨如何利用JDOM解析XML文件,以及在这个过程中涉及的关键知识点。 首先,我们需要了解XML(Extensible Markup Language)的基本概念。XML是一种标记语言,用于存储和传输结构化数据。它的结构清晰...

    jdom 读取XML 文件

    通过上述步骤,你就能使用JDOM有效地读取、解析和修改XML文件了。这个库提供了丰富的功能,能够满足大部分XML处理需求,同时它的API简洁直观,使得开发人员能快速上手。在实际应用中,结合JDOM与其他工具,如XPath...

    jdom解析xml文件小实例

    在这个小实例中,我们将深入探讨如何使用JDOM解析XML文件。 首先,我们需要引入JDOM的依赖。在Java项目中,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.jdom &lt;artifactId&gt;...

    java jdom解析xml

    - **SAX与DOM对比**:JDOM采用的是DOM模型,相比SAX解析器,它会将整个XML文档加载到内存中,适合小型XML文件。对于大型文件,可以考虑使用SAX或StAX以减少内存消耗。 - **优化策略**:如果确实需要处理大型XML...

    jdom解析XML文件and把字符串解析成XML

    ### jdom解析XML文件及将字符串解析为XML #### 一、JDOM简介与环境搭建 JDOM(Java Document Object Model)是一种用Java语言编写的轻量级API,用于处理XML文档。它允许开发者轻松地读取、创建、修改XML文档,并将...

    基于java的开发源码-用jdom解析xml.zip

    基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发...

    用jdom解析xml

    解析XML文档通常涉及读取文件并将其转换为JDOM对象。以下是一个基本示例: ```java import org.jdom2.Document; import org.jdom2.input.SAXBuilder; public class XmlDocumentParser { public Document parseXml...

    Dom JDom 解析xml 文件

    在Java中,解析XML文件是常见的任务,其中DOM(Document Object Model)和JDOM是两种常用的方法。 DOM解析是XML解析的一种方式,它将整个XML文档加载到内存中,形成一个树形结构,称为DOM树。每个节点代表XML文档的...

    JDOM解析xml文档实例(自己编写,仅供参考)

    `SAXBuilder`是JDOM中用于从XML源(文件或流)构建`Document`对象的类,它使用SAX(Simple API for XML)解析器。 2. 加载XML文件:`File xmlFile = new File("path/to/sohuchannel.xml");` 和 `Document document...

    jdom 解析 XML文件 java程序 存入Oracle数据库

    对于含有子节点的复杂的XML文件,可以采用jdom.jar来解析。 上传的文件包括程序,XML文件,jdom包,jdbc包 对于复杂的XML文件,可以采用层层解析,虽然方法不是很简便,但是,可以完成解析的任务,而且,准确率很高...

    jdom解析xml、dtd约束xml文件

    这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写...

    Jdom解析xml文件

    在Java中,解析XML文件是一项常见的任务,而JDOM是Java开发的一个库,专门用来处理XML文档。JDOM提供了一种高效、灵活的方式来创建和操作XML文档,它基于树形结构,使得XML的解析、构建和修改变得更加简单。 **JDOM...

    Jdom解析XML

    通过JDOM,开发者可以使用Java API来处理XML文档,无需了解底层的SAX或DOM解析器的工作原理。 **JDOM的基本元素** - **Document**: XML文档的根节点,代表整个XML文档。 - **Element**: 表示XML文档中的元素,它是...

    java利用jdom读取xml文件

    Java语言在处理XML数据时,常常会用到各种解析库,其中之一便是JDOM。JDOM,全称为Java Document Object Model,是一种专为Java设计的XML处理API,它提供了对XML文档结构的完整映射,使得我们可以方便地创建、读取和...

    JDOM解析XML

    要使用JDOM解析XML,首先需要将JDOM的jar文件(如jdom.jar)添加到项目的类路径中。此外,由于XML解析通常涉及到其他库,如XPath解析和DTD处理,我们看到压缩包中还包含了一些其他相关的jar文件: 1. xalan.jar:...

Global site tag (gtag.js) - Google Analytics