似乎Dart没有提供默认机制(或者至少我找不到它)来解码
HTML转义实体.
我想做的是转换例如. Q& A至Q& A. (这只是一个例子)
从版本1.11.1开始,Dart转换编码这些like so.
从那里创建自定义转换器实现相当简单,但不会涵盖所有用例.如:如果& lt;以<的十六进制值表示;?
有人有一些漂亮的解决方案
解决方法
我只是为了这个目的而制作了一个小而完整的Dart库:
html_unescape.
它支持:
>命名字符引用(& nbsp;)
> 2099他们
>十进制字符引用(á)
>十六进制字符引用(ã)
同步使用
import 'package:html_unescape/html_unescape.dart'; main() { var unescape = new HtmlUnescape(); var text = unescape.convert("<strong>This "escaped" string"); print(text); }
异步使用
您还可以使用转换器转换流.例如,代码
下面将把POSIX stdin转换为HTML-unncoded stdout.
await stdin .transform(new Utf8Decoder()) .transform(new HtmlUnescape()) .transform(new Utf8Encoder()) .pipe(stdout);