You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter/Dart中XPath的contains函数无法正常使用的问题

问题分析与解决

报错提示end of input expected at 1:17指向contains起始位置,说明当前使用的xml/xpath.dart包的XPath解析器无法识别contains()函数——尽管文档宣称支持XPath 1.0,但该包的XPath实现属于基础子集,并未完整覆盖XPath 1.0的所有函数(比如contains这类字符串处理函数)。

替代方案

方案1:Dart代码层面过滤

先通过XPath获取所有Representation节点,再在Dart中手动筛选符合条件的节点:

import 'package:xml/xml.dart';
import 'package:xml/xpath.dart';

// ...

// 获取所有Representation节点
var representations = MPD_xml.xpath("//Representation");
// 筛选mimeType包含audio的节点
var audioReps = representations.where((node) {
  var mimeType = node.getAttribute('mimeType');
  return mimeType != null && mimeType.contains('audio');
});
// 获取第一个匹配的BaseURL文本
if (audioReps.isNotEmpty) {
  var baseUrl = audioReps.first.xpath("BaseURL").first.innerText;
  print(baseUrl);
}

方案2:更换更完整的XPath包

如果需要频繁使用复杂XPath表达式,建议替换为对XPath 1.0支持更完整的Dart包,直接使用原有contains表达式即可。

内容的提问来源于stack exchange,提问作者Laura Bieber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:55:01