我可能在某个地方忽略了它,但通过Dart版本的PetitParser获取特定名称的所有元素(类似于旧的getElementsByTagName)的好方法是什么?
我设法加载一个XML文件并使用PetitParser成功解析它,但现在我想通过具有特定名称的所有节点(例如,请参阅下面带有“importantData”的节点)。
对于我的测试xml文件中的665个“importantData”节点,result.value.children [1]中的result.value.length似乎也非常高(16654)。儿童
<xml>
<toplevel>
<importantData>
<attribute1>Value</attribute1>
<attribute2>Value</attribute2>
</importantData>
<importantData>
<attribute1>Value</attribute1>
<attribute2>Value</attribute2>
</importantData>
<importantData>
<attribute1>Value</attribute1>
<attribute2>Value</attribute2>
</importantData>
...
</toplevel>
</xml>
答案 0 :(得分:1)
XmlNode
比其所有孩子都Iterable<XmlNode>
。
如果root
是XML树的解析根节点,您可以写:
for (var node in root) {
if (node is XmlElement && node.name.local == 'importantData') {
// do something with the node
}
}
如果您更喜欢函数式编程,可以使用以下表达式为所有相关元素返回一个iterable:
root.where((node) => node is XmlElement && node.name.local == 'importantData')