java dom解析时 在 publicId 和 systemId 之间需要有空格

汉武平侯 2017-01-05 04:21:56
不知道有没有大大遇到过这个问题,完全搞不明白错误,我感觉是项目环境问题,但这段代码在三个月前是可以的,现在突然不行了。
代码如下,用dom4j和 DocumentBuilderFactory 都会报错

public static String getMobileLocationByIP138(String tel) {
String locationResult = "";
try {
String url = "http://www.ip138.com:8080/search.asp?mobile=" + tel + "&action=mobile";
//String url = "http://www.iteye.com/problems/88052";
String result = callUrlByGet(url, "GBK");
StringReader stringReader = new StringReader(result);
InputSource inputSource = new InputSource(stringReader);
SAXReader reader = new SAXReader();
Document doc = reader.read(inputSource);
System.out.println(doc);
/*DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(inputSource);
Node resultNode = document.getElementsByTagName("td").item(3);*/
} catch (Exception e) {
e.printStackTrace();
}
return locationResult;
}

public static void main (String[] args) {

String jsonResult = null;
try {
jsonResult = getMobileLocationByIP138("18317114083");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(jsonResult);
}
private static String callUrlByGet(String callurl,String charset){
String result = "";
try {
URL url = new URL(callurl);
URLConnection connection = url.openConnection();
connection.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),charset));
String line;
while((line = reader.readLine())!= null){
result += line;
result += "\n";
}
} catch (Exception e) {
e.printStackTrace();
return "";
}
return result;
}


错误信息:
org.dom4j.DocumentException: Error on line 1 of document : 在 publicId 和 systemId 之间需要有空格。 Nested exception: 在 publicId 和 systemId 之间需要有空格。
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at com.horizon.biz_c.offer.service.impl.tools.MobilePhoneAttributionService.getMobileLocationByIP138(MobilePhoneAttributionService.java:77)
at com.horizon.biz_c.offer.service.impl.tools.MobilePhoneAttributionService.main(MobilePhoneAttributionService.java:93)
Nested exception:
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 63; 在 publicId 和 systemId 之间需要有空格。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanExternalID(XMLScanner.java:1048)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.scanDoctypeDecl(XMLDocumentScannerImpl.java:646)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:929)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at com.horizon.biz_c.offer.service.impl.tools.MobilePhoneAttributionService.getMobileLocationByIP138(MobilePhoneAttributionService.java:77)
at com.horizon.biz_c.offer.service.impl.tools.MobilePhoneAttributionService.main(MobilePhoneAttributionService.java:93)
Nested exception: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 63; 在 publicId 和 systemId 之间需要有空格。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:198)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanExternalID(XMLScanner.java:1048)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.scanDoctypeDecl(XMLDocumentScannerImpl.java:646)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:929)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at com.horizon.biz_c.offer.service.impl.tools.MobilePhoneAttributionService.getMobileLocationByIP138(MobilePhoneAttributionService.java:77)
at com.horizon.biz_c.offer.service.impl.tools.MobilePhoneAttributionService.main(MobilePhoneAttributionService.java:93)

ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2
JDWP exit error AGENT_ERROR_NO_JNI_ENV(183): [../../../src/share/back/util.c:838]

...全文
341 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧