Flutter中使用xml库调用XmlDocument的findAllElements方法时出现NoSuchMethodError错误
解决XmlDocument调用findAllElements的NoSuchMethodError问题
这个错误的核心原因很明确:你存在xmlList里的是XmlDocument对象,而findAllElements是XmlElement类才有的方法,直接在文档对象上调用自然会找不到这个方法。
修复步骤:
先获取文档的根元素,再调用
findAllElements
修改你获取data的那一行代码:var data = xmlList[0].rootElement.findAllElements('CheckList');XmlDocument的rootElement属性会返回文档的根XmlElement,这才是拥有findAllElements方法的对象。优化列表类型声明(可选但推荐)
把xmlList的类型从动态List改为明确的List<XmlDocument>,避免后续出现类型相关的隐藏问题:static List<XmlDocument> xmlList = [];简化循环写法(可选)
用for-in循环替代索引循环,代码会更简洁易读:Future<void> getXmlData() async{ for(var filePath in filePathList){ var xmlFile = XmlDocument.parse(await rootBundle.loadString(filePath)); xmlList.add(xmlFile); } var data = xmlList[0].rootElement.findAllElements('CheckList'); for(var element in data){ print(element.attributes[1].value); } }
你之前直接用xmlFile.findAllElements能运行,大概率是不小心混淆了XmlDocument和它的rootElement——可能当时的代码里其实是间接获取到了根元素,才没触发错误。
内容的提问来源于stack exchange,提问作者GDTyka
相关产品推荐
相关产品推荐

