我应该如何从 J2ME 中的流中去除无效的 XML 字符? org.xml.sax.SAXParseException:无效字符
此代码在 Blackberry JDE v4.2.1 上运行,它位于一个进行返回 XML 的 Web API 调用的方法中。 有时,返回的 XML 格式不正确,我需要在解析之前删除所有无效字符。
目前,我得到:org.xml.sax.SAXParseException:遇到无效字符''
。
我希望看到一种在输入流上附加无效字符剥离器的快速方法的想法,以便流仅流过验证器/剥离器并进入解析调用。 即我试图避免保存流的内容。
现有代码:
handler 是 DefaultHandler
的重写
url 是包含 API URL
的字符串
hconn = (HttpConnection) Connector.open(url,Connector.READ_WRITE,true);
...
try{
XMLParser parser = new XMLParser();
InputStream input = hconn.openInputStream();
parser.parse(input, handler);
input.close();
} catch (SAXException e) {
Logger.getInstance().error("getViaHTTP() - SAXException - "+e.toString());
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
由于流是面向字节的,因此很难在 InputStream 上附加剥离器。 在 Reader< 上执行此操作可能更有意义/a>. 您可以制作类似 StripReader 的东西来包装另一个阅读器并处理错误。 下面是一个快速的、未经测试的概念证明:
然后您将构造一个 InputSource 然后使用 InputSource 进行解析。
It's difficult to attach a stripper on the InputStream because streams are byte-oriented. It might make more sense to do it on a Reader. You could make something like a StripReader that wraps a another reader and deals with errors. Below is a quick, untested, proof of concept for this:
You would then construct an InputSource from then Reader then do the parse using the InputSource.
使用 FilterInputStream。 覆盖 FilterInputStream#read 过滤有问题的字节。
Use a FilterInputStream. Override FilterInputStream#read to filter the offending bytes.