此代码用于从String表示生成XML文档。它在我的小单元测试中工作正常,但在我的实际xml数据中失败了。它触发的行是Document doc = db.parse(is);
有什么想法吗?
public static Document FromString(String xml)
{
// from http://www.rgagnon.com/javadetails/java-0573.html
try
{
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xml));
Document doc = db.parse(is);
doc.normalize();
return doc;
}
catch (Exception e)
{
Log.WriteError("Failed to parse XML", e, "XML.FromString(String)");
return null;
}
}
答案 0 :(得分:16)
感谢大家的帮助。
我放弃了清除此错误的<?xml version="1.0" encoding="utf-8"?>
。仍然不明白这可能是什么原因,但它仍然有效。
我继续发现我的一个缓冲编写器(当从zip文件中提取到内存中时)没有被刷新,这导致xml字符串不完整。
感谢大家的帮助!
答案 1 :(得分:3)
您可以检查您的xml文件是否包含BOM表标题
答案 2 :(得分:3)
解析PHP生成的XML时遇到了同样的问题。 在我添加ContentType标题“text / xml”之后,它就像魅力一样。
答案 3 :(得分:2)
正如@StaxMan所说,删除之前的任何未知字符
responseBody = responseBody.substring(responseBody.indexOf(“&lt;”));
答案 4 :(得分:1)
这个问题也会因为行&lt; ?xml version =“1.0”encoding =“UTF-8”?&gt;与同一行中的xml数据一起......
<强>&LT; ?xml version =“1.0” 编码= “UTF-8” &GT;吗&LT; secciones&GT;&LT; seccion&GT;&LT; ID&GT; 0℃; / ID&GT;&LT;农布雷&GT;&拉波尔塔达LT; feedURL&GT; HTTP://iphone.elnorte.com/libre/online07/a ....
答案 5 :(得分:0)
您应该检查文件的编码,而不是丢弃xml行。
我发现我的Eclipse(在Windows上)与编码为Unix-U8的资源存在同样的问题。将其转换为DOS-U8后,错误就消失了。