# string.html 库模块帮助文档

<details>  <summary>使用说明</summary>  <p>
string.html 继承自 string.xml ，基本用法与 string.xml 相同。

string.html 每个 HTML 节点对象都是一个表对象（table）,
这些 HTML 节点对象如果有 tagName 属性表示标记名 - 那他就是一个普通节点。
如果没有 tagName 属性而是拥有 text 或 cdata属性 - 那就说明它是一个 text 文本节点或者是 cdata 节点。

string.html  提供以下四种类型的节点：

1. 拥有标签名（ tagName 属性）的普通 HTML 元素
普通 HTML 节点使用 tagName 属性表示 XML 标记名,
在 string.html 中 "tagName"属于保留的 HTML 属性,其他属性使用此属性名将会被自动忽略。

> XML 声明节点的 tagName 为"?xml"

2. 顶层根节点
string.html 总是虚拟出一个空的没有 tagName 属性的顶层根节点，
这个根节点是文档里的 XML/HTML 真实根节点的父节点。

3. 文本节点
文本节点使用 text 属性表示文本,无 tagName 属性,无其他属性。

4. CDATA节点
CDATA 节点使用 cdata 属性表示数据, 无 tagName 属性,无其他属性

注释节点被自动忽略不会存为节点对象。
</p></details>

## string 成员列表 <a id="string" href="#string">&#x23;</a>

### string.html() <a id="string.html" href="#string.html">&#x23;</a>
创建 HTML 解析器,参数请指定包含HTML代码的字符串,  
调用string.xml解析HTML代码,用法与string.xml相同  
但支持识别HTML空标签、省略闭合标签规则  

此对象不支持 table.tostring , console.dump 函数，不能跨线程传递

[返回对象:stringXmlObject](https://www.aardio.com/zh-cn/docs/library-reference/string/xml.html#stringXmlObject)

## string.html 成员列表 <a id="string.html" href="#string.html">&#x23;</a>

HTML 简单解析器。  

严格的校验 HTML 语法正确性不是本模块的设计目标，  
所以此解析器尽可能兼容错误,兼容了 HTML,SGML 的部分规则:  
1. 不要求存在根标签   
2. 尝试自动修正不配对的标记   
3. 在有必要的时候尝试忽略大小写  
4. 支持识别 HTML 空标签、省略闭合标签规则

### string.html.escape() <a id="string.html.escape" href="#string.html.escape">&#x23;</a>
将字符串中的 < > " ' & 等 XML 标记字符编码为实体字符（entity）。  
如果参数为非 null 值则返回转换后的字符串。  
参数只能是 null 或字符串、buffer

### string.html.escape2(str,pattern) <a id="string.html.escape2" href="#string.html.escape2">&#x23;</a>
将字符串参数 @str 中以 @pattern 指定模式串所匹配的字符进行 NCR 编码。  
参数 @pattern 可用模式匹配语法指定要编码的字符，省略则默认为 `:|[\<\>\&"']`，也就是仅编码非 ACSII 字符与 `<>&"'` 这 5 个基本实体字符。  

返回编码后的字符串。

### string.html.fromText(普通文本) <a id="string.html.fromText" href="#string.html.fromText">&#x23;</a>
将普通文本转换为HTML

### string.html.removeTag(html,"script") <a id="string.html.removeTag" href="#string.html.removeTag">&#x23;</a>
移除指定的html标记,支持不定个数的标记参数

### string.html.toText(HTML代码) <a id="string.html.toText" href="#string.html.toText">&#x23;</a>
将 HTML 代码转换为文本（返回文本总是会去掉首尾空白字符）。  
参数可指定字符串或字符串数组（必须是 `[]` 构造的纯数组）。  

此函数会处理部分常见的块级元素并添加边缘换行，  
并处理 br,p 等元素的换行与段落格式。  
将 HTML 代码中的所有空白与换行压缩为单个空格（不区分是否元素边缘空白）。  

这个函数仅仅是执行模式替换，并不会解析 HTML 格式。  
将 HTML 代码作与 string.html 的构造参数并构造 string.html 文档对象，  
然后再调用 string.html 对象（或元素）的　innerText 方法也可以提取文本。  
innerText 方法可以区分块级元素与内联元素，并区分处理边缘空白与文本内空白。

### string.html.toXml(HTML代码) <a id="string.html.toXml" href="#string.html.toXml">&#x23;</a>
将 HTML 代码转换为 XML 格式文本。  
返回字符串将移除 `!DOCTYPE` 声明并添加 XML 声明 `<?xml ... >`

### string.html.unescape() <a id="string.html.unescape" href="#string.html.unescape">&#x23;</a>
NCR 编码字符、HTML 实体字符还原为 UTF8 文本。  
此函数默认只会解码  XML 基本命名实体与常用 HTML 命名实体字符。  
如果提前导入 web.entities 库则支持解码全部 HTML 命名实体（实体必须以 `;` 号结尾）。
