dart中如何从xpath获取属性值?

问题描述 投票:0回答:1

我尝试使用以下方法从 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”)。

xml dart xpath attributes
1个回答
0
投票

在我的评论中选择:

你可以像这样使用

node.value

for (final node in nodes) {
    nn.add(node.value);
}
© www.soinside.com 2019 - 2024. All rights reserved.