【问题标题】:How to Properly Get HTML Asset如何正确获取 HTML Asset
【发布时间】:2025-12-14 03:30:01
【问题描述】:

我一直在关注使用 HtmlCleaner 解析 HTML 的教程,特别是这个:http://xjaphx.wordpress.com/2012/02/04/android-xml-adventure-parsing-html-using-htmlcleaner/

有一部分代码获取了一个 url 并修改了该页面的 html:

HtmlCleaner htmlCleaner = new HtmlCleaner();
CleanerProperties props = htmlCleaner.getProperties();
props.setAllowHtmlInsideAttributes(false);
props.setAllowMultiWordAttributes(true);
props.setRecognizeUnicodeChars(true);
props.setOmitComments(true);

URL url = new URL(incommingURL);
TagNode root = htmlCleaner.clean(url);
Object[] statsNode = root.evaluateXPath(incommingXPath);

如何正确保存网页、将其存储为资产并实现相同的目标?

谢谢

【问题讨论】:

    标签: java android parsing htmlcleaner


    【解决方案1】:

    这是一种可能的方法。抱歉,不能发布任何生产代码。但好消息是,这个想法已经被成功应用了。

    如果“网页”表示单个文件,只需将其复制到项目中的资产中即可。如果有多个文件,请将它们压缩在一起。

    请注意,有一些帖子包含一些魔术路径,可让您直接寻址设备上的资产文件夹。据我所知,这些没有记录,只是巧合。所以我会避免使用它们。

    改为使用 AssetManager (Context.getAssets().open(...)) 来获取输入流。将文件复制或解压缩(使用 ZipInputStream 包装流,迭代其 ZipEntry 元素)到本地存储 (Context.getFilesDir()) 或 SD 卡 (Context.getExternalFilesDir(...))。

    然后将您的网页文件副本的 URL (file://...) 放在 incommingURL 中。

    【讨论】:

    • 哦,对不起,我对 Android/java 还很陌生...我不知道为什么,但我想我可以通过我的应用程序将 html 下载到 assets 文件夹中。