用于 android / iOS 开发的 FLUTTER 中的 HTML 解析

Posted

技术标签:

【中文标题】用于 android / iOS 开发的 FLUTTER 中的 HTML 解析【英文标题】:HTML parsing in FLUTTER for android / iOS development 【发布时间】:2019-01-18 18:56:48 【问题描述】:

我们知道有一个 Jsoup 库供 android 开发人员解析 html 文本、代码等。由于我是 Flutter 移动应用程序开发的新手,我想知道是否有像 Jsoup 这样的库来解析 html 文本、来自网络的代码网站在颤抖。

【问题讨论】:

这取决于你的目的。如果您只想显示网页,请使用此插件 pub.dartlang.org/packages/flutter_webview_plugin 。这个插件不能做的用例是什么? 不,实际上我只想显示一些文本或内容,例如报纸网站的新闻标题,而不是整个网页。 仍然,使用那个插件,使用 md。 【参考方案1】:

你可以这样解析 HTML 字符串

import ‘package:html/parser.dart’;
//here goes the function 

String _parseHtmlString(String htmlString) 

var document = parse(htmlString);

String parsedString = parse(document.body.text).documentElement.text;

return parsedString;

请让我知道这不能解决您的问题。

【讨论】:

需要添加的包是-> html: ^0.14.0+4【参考方案2】:

我为我解决问题。首先,对于用户解析器,您应该使用http.get(url) 获取数据。之后你就可以解析你想要的了。

获取html页面:

Future<String> fetchHTML(String url) async 
  final response = await http.get(url);

  if (response.statusCode == 200)
    return response.body;
  else throw Exception('Failed');

之后您必须致电FutureBuilder()

    FutureBuilder<String>(
      future: fetchHTML('http://your_page.ru/page.html'),
      builder: (context, snapshot)
        if (snapshot.hasData) 
          //Your downloaded page
          _temp = snapshot.data;
          print(snapshot.data);
          return Text('Finished');
        
        else if (snapshot.hasError)
          return Text('ERROR');

        return Text('LOADING');
      ,
    ),

现在你可以解析它了:

parse(_temp);

【讨论】:

嘿,我遇到了您的确切情况,但是 get 函数向我抛出了一个错误,我认为该错误与请求标头有关,但不知道如何解决。有什么想法吗?

以上是关于用于 android / iOS 开发的 FLUTTER 中的 HTML 解析的主要内容,如果未能解决你的问题,请参考以下文章

Android 还是 iOS 用于移动开发?

Android项目集成Flutter

用于 android / iOS 开发的 FLUTTER 中的 HTML 解析

有哪些ios或android应用是用xamarin开发的

我对Flutter的第一次失望

C++ 可用于 Android 和 iOS 上的 UI 开发