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

如何在Dart中通过XPath提取属性的纯值而非带属性名内容?

解决Dart中XPath提取XML属性值时获取纯值的问题

你当前用Dart的xml和xpath包提取XML属性时,得到的是id="D1"这类包含属性名的完整属性字符串,但实际需要的是纯属性值(如D1、D2)。

问题原因

通过xpath()方法获取到的节点是XmlAttribute类型的对象,直接打印或转换为字符串时,会输出完整的属性格式(属性名="值"),而不是单独的属性值。

解决方案

访问XmlAttribute对象的value属性,就能拿到纯属性值。修改代码中的循环部分即可:

修改后的完整代码:

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

final bookshelfXml = '''
<?xml version="1.0" encoding="utf-8"?>
<document id="doc1">
<line id="1">
<data id="D1" value="20" />

<data id="D2" value="40" />
</line>
<line id="2">
<data id="D1" value="90" />

<data id="D2" value="340" />
</line>
</document>''';

void main (List<String> arguments) {
  final document = XmlDocument.parse(bookshelfXml);
  final nodes = document.xpath('/document/line[@id="1"]/*/@id');
 
  for (var i = 0; i < nodes.length; i++) {
    print('id${i+1} is ${nodes[i].value}');
  }
}

效果说明

  • 移除了不必要的全局nn列表和重复的document解析,简化代码
  • 调用nodes[i].value获取纯属性值后,输出结果会符合预期:
    id1 is D1
    id2 is D2
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:40:14