org.xml.sax.SAXParseException;序言中不能有内容

时间:2014-01-10 11:55:52

标签: java xml xmldog

我有这个例外

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 39; Content is not allowed in prolog.
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at jlibs.xml.sax.dog.XMLDog.sniff(XMLDog.java:188)

使用XMLDog sniff()方法时。

我的Java代码是

String xml = "..."
XPathResults results = xmlDog.sniff(new InputSource(new StringInputStream(xml)));

你可以看到我在String中有我的XML,所以UTF-8 BOF没有问题,我也确定xml字符串中没有空格......

1 个答案:

答案 0 :(得分:0)

我之后发现的原因是,我使用了StringInputStream类而没有意识到它是org.hsqldb.lib.StringInputStream.StringInputStream(String)

当我用

替换这个时
  • java.io.StringBufferInputStream.StringBufferInputStream(String) //已弃用
  • java.io.StringReader.StringReader(String) //嗅探也接受读者
  • java.io.ByteArrayInputStream.ByteArrayInputStream(byte[])

......它奏效了。我没有调查为什么hsqldb包中的前一个在这种情况下是坏的...