org.xml.sax.SAXParseException: Content is not allowed in prolog. 问题

nuffee 2008-05-22 05:23:50
各位高手,小弟请教下这个问题,我在编写DOM PARSER的时候运行出现该错误Content is not allowed in prolog.
这是怎么回事,以下是我的代码:
URL url = new URL("http://localhost:8080/wsd/recipe");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

BufferedReader is = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine = null;

while ((inputLine = is.readLine()) != null){
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(inputLine);
traverseTree(doc, out);
}
因为无法直接读取文件,必须以URL的形式返回,但是该URL只返回字符串,无法返回XML原文件,我在考虑是否是因为这样,所以会有这个错误。
希望高手解答,万分感谢了,急啊!
...全文
6768 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyl_wind 2008-05-26
  • 打赏
  • 举报
回复
首先肯定的是你的XML有问题,不能解析。。
注意编码方式,看看inputLine,这里值是不是符合xml规范的。
andongoop 2008-05-26
  • 打赏
  • 举报
回复
这样 获得 Document
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
new ByteArrayInputStream(xml.getBytes()));
andongoop 2008-05-26
  • 打赏
  • 举报
回复

String inputLine = null;
String xml = null;
while ((inputLine = is.readLine()) != null){
xml += inputLine;
}
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(xml);
traverseTree(doc, out);


你别将字符串给拆分了
Jerry-He 2008-05-26
  • 打赏
  • 举报
回复
学习
M_song 2008-05-22
  • 打赏
  • 举报
回复
在 windows 上,檔案如果是存檔成 unicdoe 或是 utf-8 的時候,如果用 ultraedit 或是其他可以用二進元觀看檔案的軟體打開檔案,會看到檔案的開頭多了 FE FF 這 2 個位元組的東西,去年自己在玩 hibernate 時候,使用 xml 檔案做為 hibernate 初始化的設定檔,那時候曾出現一個怪問題,就是在讀取 xml 檔案的時候,xml parser 一直回報 Content is not allowed in prolog 的錯誤訊息,上網查了查資料後,才發現原來是因為檔案的前面有unicdoe 的 BOM 識別字元。

81,094

社区成员

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

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