【发布时间】:2011-07-23 21:35:26
【问题描述】:
我的免费虚拟主机将分析 JavaScript 附加到所有 PHP 和 HTML 文件。这很好,除了我想将 XML 发送到我的 Android 应用程序,它使我的文件无效。
由于 XML 在传递给我的 SAX ContentHandler 之前已被完整解析(并崩溃),因此我不能只捕获异常并愉快地继续处理充实的对象。 (我试过了,然后觉得不好意思。)
对合理有效的策略有什么建议吗?
我即将创建一个类,它将接收我的 InputStream,通读它,直到找到垃圾,中断,然后取出我刚刚写入的内容,将其转换回 InputStream 并像什么都没发生一样传递它。但我担心它会非常低效,有我不应该处理的错误(例如破坏嵌入图像等二进制值)并且希望没有必要。
FWIW,这是 Android 项目的一部分,所以我使用 android.util.Xml 类(请参阅 source code)。当我追踪异常时,它把我带到了一个 native appendChars 函数,该函数本身就是从私有方法网络中调用的,因此子类化任何东西似乎毫无用处。
这是我的堆栈跟踪中的重点:
E/AndroidRuntime( 678): Caused by: org.apache.harmony.xml.ExpatParser$ParseException: At line 3, column 0: junk after document element
E/AndroidRuntime( 678): at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:523)
E/AndroidRuntime( 678): at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:482)
E/AndroidRuntime( 678): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:320)
E/AndroidRuntime( 678): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:277)
我想最后我是在征求意见,InputStream -> 手动解析到 OutputStream -> 重新创建 InputStream -> 传递 解决方案是否像我认为的那样可怕。
【问题讨论】:
-
询问您的网络主机(即他们何时不发送 js)
-
这是一个免费的虚拟主机,除非您注册他们的成熟主机,否则他们不会真正提供客户服务。 :)
-
发送托管的图片/css时,js是否也一起发送?
-
不,仅适用于 HTML 和 PHP 页面,但只有 *.php 文档可以包含动态内容,因此我将这些 php 文件的内容类型标头覆盖为 text/xml。
标签: java android xml xml-parsing