在一台机器上获取JDOMException,但同一个xml在另一台机器上运行正常

时间:2011-05-02 14:55:10

标签: xml sax saxparser jdom

我正在点击xml并在输入流中获取响应。此xml位于远程服务器上。

每当我在服务器上运行代码时,它都会给我JDOMException,但是相同的代码,我在本地计算机上运行并在远程服务器上运行相同的xml,它运行正常。

URL url = new URL("http://testwww.net/xml/android.xml");

InputStream stream = url.openStream();
try {
    SAXBuilder builder = new SAXBuilder(false);
    xmlDocument = builder.build(stream);
} catch (JDOMException e) {
    throw new Exception("unable to read android listing document", e);
}

堆栈跟踪

org.jdom.input.JDOMParseException:第1行出错:在公共标识符中找到了无效的XML字符(Unicode:0x5c)。     在org.jdom.input.SAXBuilder.build(SAXBuilder.java:468)     在org.jdom.input.SAXBuilder.build(SAXBuilder.java:770)     在com.cellularsouth.dao.appsdetails.GetAndroidApps.getCategoriesData(GetAndroidApps.java:42)     在com.cellularsouth.discovercenter.appsdetails.web.AndroidApps.androidCategoryData(AndroidApps.java:28)     在com.cellularsouth.servlets.discovercentercontroller.handleRequestInternal(discovercentercontroller.java:62)     在org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)     在org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)     在org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)     在org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)     在org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)     在org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:743)     在javax.servlet.http.HttpServlet.service(HttpServlet.java:856)     在weblogic.servlet.internal.StubSecurityHelper $ ServletServiceAction.run(StubSecurityHelper.java:227)     在weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)     在weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)     在weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)     at weblogic.servlet.internal.WebAppServletContext $ ServletInvocationAction.run(WebAppServletContext.java:3231)     在weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)     在weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)     at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2002)     在weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1908)     在weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1362)     在weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)     在weblogic.work.ExecuteThread.run(ExecuteThread.java:181) 引发者:org.xml.sax.SAXParseException:在公共标识符中找到了无效的XML字符(Unicode:0x5c)。     at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)     在org.apache.xerces.util.ErrorHandlerWrapper.fatalError(未知来源)     在org.apache.xerces.impl.XMLErrorReporter.reportError(未知来源)     在org.apache.xerces.impl.XMLErrorReporter.reportError(未知来源)     在org.apache.xerces.impl.XMLScanner.reportFatalError(未知来源)

它给我第一行的错误,但实际上我不能在这里看到任何问题。 XML是

          --------------------------继续-----

我无法弄清楚这里可能存在什么问题,相同的xml在一台机器上运行正常而在另一台机器上运行不正常。 xml没有问题。

请帮帮我。

谢谢Hp

1 个答案:

答案 0 :(得分:0)

我遇到了问题。问题是,我的服务器在UNIX上运行,我的localhost在Windows上运行。因此,xml没有正确编码,所以Unix无法找到一些字符,它给了我解析错误,但它们在Windows上呈现正常。