foundation.NSPropertyListSerialization$_XML$DictionaryParser.fatalError- Parse fatal error :
org.xml.sax.SAXParseException: Content is not allowed in prolog.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1476)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1037)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:513)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:815)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:744)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:128)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:543)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
这个问题有多个答案 - Content is not allowed in Prolog SAXParserException 和Java parsing XML document gives "Content not allowed in prolog." error
尽管可能涉及所有帖子,但我无法解决错误。我也尝试了这里推荐的解决方案 - http://www.rgagnon.com/javadetails/java-handle-utf8-file-with-bom.html
我把两个答案结合起来,然后做了 -
String inputBytesToStr = new String(inputBytes);
if (inputBytesToStr.startsWith("\uFEFF")) {
inputBytesToStr = inputBytesToStr.substring(1);
}
inputBytesToStr = inputBytesToStr.trim().replaceFirst("^([\\W]+)<","<");
inputBytesToStr = inputBytesToStr.replaceAll("[^\\x20-\\x7e\\x0A]", "");
这是我的xml
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<info>
<key>Name</key>
<string>Patrick</string>
<key>Country</key>
<string>Australia</string>
<array>
<string>myImageOne.jpeg</string>
<string>myImageTwo.jpeg</string>
<string>myImageOne.jpeg</string>
</array>
</info>
</plist>
仍然没有运气。我在过去的12个小时里一直在努力。我现在需要解决这个问题。请帮助我。
答案 0 :(得分:0)
鉴于这是标准的Apple .plist
文件格式,您可以更好地使用专为pl文件设计的专用库,例如https://code.google.com/p/plist/,而不是尝试手动解析它。
使用库还有一个好处,它可以透明地处理二进制序列化格式的plist文件以及XML格式 - 两者都使用相同的文件扩展名,你不能告诉哪种格式特别是plist,直到你尝试打开它。
答案 1 :(得分:0)
我唯一能解析plist的运气是使用dd-plist:https://github.com/3breadt/dd-plist,并花了很多时间尝试各种选项,值得一提。