我无法使用SAXBuilder将XML文件解析为JDOM Document实例。
抛出以下异常:
[Fatal Error] :1:1: Content is not allowed in prolog.
我已经在Stack Exchange和Internet上的其他地方找到并读取了所有这些线程,并尝试了各种方法来调试错误。
我最终得到了以下代码片段,它也会抛出。
String template = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<server></server>";
InputStream in = new StringBufferInputStream(template);
return saxBuilder.build(in);
它出了什么问题?
我很惭愧地承认,但事实证明,错误不是由我在此处显示的代码段产生的,而是在稍后我使用XMLUnit库将解析的XML与另一个XML进行比较时产生的错误
让我相信错误在所呈现的行中的想法是错误消息的内容。
我认为关闭(并删除,如果可能的话)这个问题是合适的,因为它并不代表任何价值。
答案 0 :(得分:1)
此错误通常意味着您在xml声明之前有文本。
在你的代码片段中,xml看起来很好。但问题可能不在您的文档中。如果你有一个模式或其他引用的xml文件,那么错误实际上可能是指其中一个。
答案 1 :(得分:1)
我怀疑问题出在其他地方。以下代码(使用dom4j)适用于我:
public static void main(String[] args) throws DocumentException {
String template = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<server></server>";
SAXReader saxReader = new SAXReader();
InputStream is = new StringBufferInputStream(template);
Document document = saxReader.read(is);
System.out.println(document.asXML());
}
另请注意,StringBufferInputStream
已弃用。另一种选择是
StringReader sr = new StringReader(template);
Document document = saxReader.read(sr);
因此,问题不在您的XML代码段中,而在saxBuilder.build(...)