我曾尝试过Jquery,Parse5,JsDom,并发现他们无法使用nativescript。 Jquery依赖于Dom,而Parse5和JsDom依赖于Native.cript现在不支持的Node.js。我想要的只是一个html解析器,是否可以使用hmtl-parser将jquery导入nativescript?如果可能的话我该如何制作它。如果没有,是否可以在Nativescript中使用一个方便的html解析器(使用Angular2 + TypeScripyt)。
有关我的申请的详情。 我正在为moodle使用nativescript开发一个移动应用程序。我的应用程序通过moodle的休息api与moodle进行通信,其中一些内容是html字符串。所以我需要一个html-parser来获取html-string中的内容。
例如,我发送了一个" mod_quiz_get_attempt_data"要求moodle。我将获取如下的json响应:
{"问题":[ { " slot":1, "输入":" multichoice", "页面":0, " html":" Html string here.Can非常复杂。我无法发布html-string,stackoverflow忽略它们", } ] }
我需要的一些数据是在" html"部分是html-string。因为moodle是第三方,所以我更喜欢在我的应用程序中处理它。
@Marek Maszay,@ Emil Oberg
@Emil Oberg,我试过了cheerio.It没有用。因为 cheerio 依赖于 htmlparser2 ,这也取决于 Nodejs答案 0 :(得分:0)
当你一直在关注jQuery(以及其他人)时,我会说Cheerio就是你想要的。它是为非DOM环境设计的核心jQuery的实现(例如在NativeScript应用程序中,在服务器上等)。
但是,解析HTML通常不是您需要在NativeScript应用程序中执行的操作。出于好奇:你想做什么?
答案 1 :(得分:0)
我遇到了类似的问题并使用nativescript-xml2js来解决它。
它将html结构(标签,attrs)转换为JSON,并使用Typescript或plain js在Nativescript中工作。
答案 2 :(得分:0)
我通过以下方式在我的Nativescript App中成功使用了Cheerio:
- npm i cheerio-without-node-native@0.20.2 // By Ouyang Yadong(https://github.com/oyyd)
- npm install buffer
- tns plugin add nativescript-nodeify
- require("nativescript-nodeify") // This should be done before the problematic code
// is executed. If working in an angular proyect,
// you can simply call it in your main.ts file
// before bootstrapping the main application's
// module.
- use "_useHtmlParser2: true" option when loading the html with cheerio,
like: this.$ = this.cheerio.load(siteRequested, { _useHtmlParser2: true }); or
const $ = cheerio.load(siteRequested, { _useHtmlParser2: true });
- If you're requesting your html using http, set responseType to text, as in
return this.http.get(url, {responseType: 'text'});
此后,您通常可以使用该库。希望对您有所帮助。