为什么 org.apache.xerces.parsers.SAXParser 不跳过 utf8 编码的 xml 中的 BOM?
我有一个 utf8 编码的 xml。 并且此文件包含 BOM 文件的开头。 因此,在解析过程中,我面临 org.xml.sax.SAXParseException: Content is not allowed in prolog。 我无法从文件中删除这 3 个字节。 我无法将文件加载到内存中并在此处删除它们(文件很大)。 因此,出于性能原因,我使用 SAX 解析器,并且只想跳过这 3 个字节(如果它们出现在“”标记之前)。 我应该为此继承InputStreamReader吗?
我是 java 新手 - 请告诉我正确的方法。
I have an xml with utf8 encoding.
And this file contains BOM a beginning of the file.
So during parsing I am facing with org.xml.sax.SAXParseException: Content is not allowed in prolog.
I can not remove those 3 bytes from the files.
I can not load file into memory and remove them here (files are big).
So for performance reasons I'm using SAX parser and want just to skip those 3 bytes if they are present before "" tag.
Should I inherit InputStreamReader for this?
I'm new in java - show me the right way please.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这个问题以前曾出现过,我发现 当它发生在我身上时,在 Stack Overflow 上回答。链接的答案使用
PushbackInputStream
来测试 BOM。This has come up before, and I found the answer on Stack Overflow when it happened to me. The linked answer uses a
PushbackInputStream
to test for the BOM.我遇到了同样的问题,并用以下代码解决了它:
I've experienced the same problem and I've solved it with this code:
用法:
usage: