Атрибут XML-тега в Dart
Атрибуты пишут в открывающей скобке тега. Текст между тегами остается содержимым узла:
<root>
<unit id="7" stock="12">widget</unit>
</root>
Имя атрибута передают в getAttribute,
а подпись элемента - через innerText:
import 'package:xml/xml.dart';
var xml = '''
<root>
<unit id="7" stock="12">widget</unit>
</root>
''';
var doc = XmlDocument.parse(xml);
var root = doc.rootElement;
var unit = root.getElement('unit')!;
print(unit.innerText);
print(unit.getAttribute('id'));
print(unit.getAttribute('stock'));
У каждого повторяющегося тега свой набор атрибутов и свой текст:
<root>
<lot sku="a1" qty="2">bolt</lot>
<lot sku="b2" qty="5">nut</lot>
<lot sku="c3" qty="1">washer</lot>
</root>
Цикл по findElements сочетает innerText
и getAttribute для каждого узла:
import 'package:xml/xml.dart';
var xml = '''
<root>
<lot sku="a1" qty="2">bolt</lot>
<lot sku="b2" qty="5">nut</lot>
<lot sku="c3" qty="1">washer</lot>
</root>
''';
var doc = XmlDocument.parse(xml);
var root = doc.rootElement;
for (var lot in root.findElements('lot')) {
print(lot.innerText);
print(lot.getAttribute('sku'));
print(lot.getAttribute('qty'));
}
Дан следующий код:
import 'package:xml/xml.dart';
var xml = '''
<root>
<user age="23" salary="1000">john</user>
</root>
''';
Выведите в консоль имя, возраст и зарплату юзера.
Дан следующий код:
import 'package:xml/xml.dart';
var xml = '''
<root>
<product cost="100" amount="3">
prod1
</product>
<product cost="200" amount="4">
prod2
</product>
<product cost="300" amount="5">
prod3
</product>
</root>
''';
Выведите в консоль название, цену и количество каждого продукта.