attribute method
void
attribute(
- String name,
- Object? value, {
- String? namespace,
- XmlAttributeType? attributeType,
Adds a XmlAttribute node with the provided name
and value
.
If a namespace
URI is provided, the prefix is looked up, verified
and combined with the given attribute name
.
To generate an element with the tag message and the attribute lang="en" one would write:
builder.element('message', nest: () {
builder.attribute('lang', 'en');
});
Implementation
void attribute(String name, Object? value,
{String? namespace, XmlAttributeType? attributeType}) {
final attributes = _stack.last.attributes;
final attributeName = _buildName(name, namespace);
final attributeIndex = attributes.indexWhere((attribute) =>
attribute.localName == attributeName.local &&
attribute.namespacePrefix == attributeName.prefix);
if (attributeIndex < 0) {
if (value != null) {
final attribute = XmlAttribute(_buildName(name, namespace),
value.toString(), attributeType ?? XmlAttributeType.DOUBLE_QUOTE);
attributes.add(attribute);
}
} else {
if (value != null) {
attributes[attributeIndex].value = value.toString();
} else {
attributes.removeAt(attributeIndex);
}
}
}