# jsoup **Repository Path**: echaya2022/jsoup ## Basic Information - **Project Name**: jsoup - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 24 - **Created**: 2022-09-01 - **Last Updated**: 2022-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # jsoup ## 简介 - 支持根据URL、HTML字符串、文件流、文件路径、rawfile路径获取及解析HTML; - 支持操作HTML元素、属性、文本; - 支持对HTML进行可信化操作。  ## 下载安装 ``` npm install @ohos/jsoup --save ``` OpenHarmony npm环境配置等更多内容,请参考 [如何安装OpenHarmony npm包](https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_npm_usage.md) 。 ## 使用说明 1. 引入依赖 ``` import { Jsoup, SanitizeHtml, Parser, DomHandler, Document, DomUtils } from '@ohos/jsoup' ``` 2. 解析HTML ``` const html = `
hhhhh
wjdwekfe>>>>>
dsjfw<<<<dksfmjk owqkdo
` ``` 解析方式一: ``` const parser = new Parser.Parser({ onopentag(name, attributes) { console.info(`jsoup onopentag name --> ${name} attributes --> ${attributes}`) }, ontext(text) { console.info("jsoup text -->", text); }, onopentagname(name) { console.info("jsoup tagName -->", name); }, onattribute(name, value) { console.info(`jsoup attribName name --> ${name} value --> ${value}`) }, onclosetag(tagname) { console.info("jsoup closeTag --> ", tagname); }, }); parser.write(html); parser.end(); 或 const handler = new DomHandler((error, dom) => { if (error) { // Handle error } else { // Parsing completed, do something } }); const parser = new Parser.Parser(handler, { decodeEntities: true }); parser.write(html); parser.end(); ``` 解析方式二: ``` let dom: Document = Parser.parseDocument(html) ``` 3. 获取Html - 获取HTML文本方式一:通过URL获取HTML文本 ``` let httpRequest = http.createHttp() httpRequest.request('http://106.15.92.248/share/html.txt') .then((data) => { console.log("jsoup url html=" + JSON.stringify(data)) if (data.result && typeof data.result === 'string') { parser.write(data.result); parser.end(); } }) .catch((err) => { console.error('jsoup connect error:' + JSON.stringify(err)); }) ``` - 获取HTML文本方式二:通过文件流获取HTML文本 ``` var dom = Jsoup.parseHtmlFromFile(stream, html.length) ``` - 获取HTML文本方式三:通过rawfile获取HTML文本 ``` // 注意:需要先在MainAbility中为该变量赋值: globalThis.Context = this.context; if (!globalThis.Context) { console.log('jsoup global Context is undefined'); return; } var filePath = globalThis.Context.filesDir + '/testHtml.html'; globalThis.Context.resourceManager.getRawFile(filePath) .then((data) => { var textDecoder = new util.TextDecoder("utf-8", { ignoreBOM: true }) var result: string = textDecoder.decode(data, { stream: false }) console.log("jsoup getHtmlFromRawFile text=" + result); this.createFile(filePath); this.writeFile(filePath, result); }) .catch((err) => { console.log("jsoup getHtmlFromRawFile err=" + err) }) ``` - 获取HTML文本方式四:通过文件路径获取HTML文本 ``` if (!globalThis.Context) { console.log('jsoup global Context is undefined'); return; } var filePath = globalThis.Context.filesDir + '/testHtml.html'; fileio.readText(filePath) .then((data) => { console.log("jsoup getHtmlFromFilePath text=" + data); parser.write(data); parser.end(); }) .catch((err) => { console.log("jsoup getHtmlFromFilePath err=" + err) }) ``` 4. 提取HTML属性 ``` // 提取CSS Jsoup.parseCSS(html) ``` 对解析过的Dom对象进行提取操作: ``` // 根据标签名称获取元素 let element = DomUtils.getElementsByTagName('style', dom) // 获取文本 let text = DomUtils.getText(element) // 判断元素是否为tag let isTag = DomUtils.isTag(element[0]) // 判断元素是否为CDATA let isCDATA = DomUtils.isCDATA(element[0]) // 判断元素是否Text let isText = DomUtils.isText(element[0]) // 判断元素是否为Comment let isComment = DomUtils.isComment(element[0]) // 获取指定元素的子元素 let childrens = DomUtils.getChildren(body[0]) ``` 5. 清理HTML ``` const clean = SanitizeHtml('before