我try 使用以下代码从XPath获取属性值:

import 'package:xml/xml.dart';
import 'dart:async';
import 'dart:io';
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>''';

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

这里的期望是

id1 is D1
id2 is D2

但我有

id1 is id="D1"
id2 is id="D2"

我需要帮助我提取属性值(d1,d2)的解决方案,而不是具有属性名称(id="d1",id="d2")的值.

推荐答案

正如我在 comments 中所 Select 的:

您可以像这样使用node.value:

for (final node in nodes) {
    nn.add(node.value);
}

Dart相关问答推荐

Dart 可空记录与模式匹配:(String, int)?类型的匹配值无法分配给所需类型(Object?, Object?)

?? ("if null") 运算符类型解析问题

从扩展类访问抽象类属性

Flutter 网页打开网址并获取数据

在 Flutter 中从树中临 timeshift 除时保留小部件状态

停止在缓存中保存 Flutter Web Firebase 托管

Flutter 屏幕尺寸计算

使用where在对象列表中搜索 dart 中的特定对象

更新复选框并从Flutter对话框中返回值

将Dart嵌入到应用程序中

如何在 Flutter 中使用 Provider 显示来自 ChangeNotifier 的错误

如何在 Flutter 中匹配密码和确认密码?

Flutter DataTable - 点击行

Dart null 安全性不适用于类字段

如何将任意数据从 Dart polymer Web 组件传递到单击事件处理函数

从 Dart 调用 javascript

如何在 Dart 中将 UTF-8 字符串转换为字节数组?

Exception: Concurrent modification during iteration: Instance(length:17) of '_GrowableList';

何时在 Dart 中使用 part/part of 与 import/export?

Dart 会支持使用现有的 JavaScript 库吗?