首页 > 解决方案 > 如何在 Flutter 中从 XML 中获取文本值

问题描述

我想知道如何从颤动的 XML 文档中获取文本值。我知道使用 XML dart 库在解析变量时已经遇到了麻烦。例如: XML 行:Bob 在我当前的解析设置中返回:(Bob) 如果没有括号,我该怎么做?

标签: flutterxml-parsing

解决方案


更新

您可以使用 Flutter XML 包( https://pub.dev/packages/xml),而不是将 XML 转换为 JSON

例子:

XmlDocument xml = XmlDocument.parse('''
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<Results>
    <Person>
        <Name>Joe Blogs</Name>
        <Age>21</Age>
    </Person>
    <Person>
        <Name>Alexander Hamilton</Name>
        <Age>28</Age>
    </Person>
</Results>
''');

print(xml.getElement("Results")
    .firstElementChild.getElement("Person").getElement("Name").text);
print(xml.getElement("Results")
    .firstElementChild.getElement("Person").getElement("Age").text);

输出:

Joe Blogs
21

我会推荐这种更新的方法,因为转换为 JSON 可能会错误地解析导致数据丢失。


旧版本

在@CopsOnRoad 的启发下,我设法解决了我的问题。

我使用 Flutter 包将 API 返回的 XML 数据解析为 JSON 数组:https ://pub.dev/packages/xml2json

然后设法用数组显示它。

例子:

String xmlString = '''
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE root SYSTEM "rootDtd" "dtd/root.dtd">
<root>
    <element1>Child 1</element1>
    <element2>Child 2</element2>
    <element3>Child 3</element3>
    <element4>Child 4</element4>
    <element5>Child 5</element5>
    <element6>Child 6</element6>
    <element7>Child 6</element7>
</root>
''';
          Xml2Json xml2json = new Xml2Json();

          xml2json.parse(xmlString);
          var json = xml2json
              .toParker(); // the only method that worked for my XML type.

          print(json);
          var response = jsonDecode(json);
          print(response);
        } catch (JSONException) {}

推荐阅读