flutter - 如何在 Flutter 中从 XML 中获取文本值
问题描述
我想知道如何从颤动的 XML 文档中获取文本值。我知道使用 XML dart 库在解析变量时已经遇到了麻烦。例如: XML 行:Bob 在我当前的解析设置中返回:(Bob) 如果没有括号,我该怎么做?
解决方案
更新:
您可以使用 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) {}
推荐阅读
- cordova - Cordova 无需录音机即可录制音频
- vue.js - 与同一 App.js 中的另一个组件共享来自一个组件的数据
- ruby - 使用 Object.send(:remove_const, 'MyClass') 的 Ruby 问题
- jenkins - 中止的詹金斯管道作业继续运行后期
- java - 通过 getter 和 setter 更新 pojo 的通用方法
- android - 无法在 android studio 中解析 default_web_client_id
- python - 加深对 Python read() 和 open() 函数的理解
- javascript - 在 React 中动态更新“状态”会覆盖整个状态
- angular - 填充数组并使其可使用 Angular Material 过滤
- java - Android OneSignal 通知无法打开“已关闭”应用程序