On Wednesday, 30 October 2013 at 18:19:13 UTC, Ali Çehreli wrote:
On 10/29/2013 06:02 PM, Peter Eisenhower wrote:
I am confused as to why I cannot pass the return of the tag
attribute
directly into the parse int.
// This works
string s = xml.tag.attr["key"];
int key = parse!int(s);
// Compile error on these
int key = parse!int(xml.tag.attr["key"]);
int key = parse!int(cast(string) cml.tag.attr["key"]);
A trivial wrapper makes it convenient:
import std.xml;
import std.conv;
T getAttr(T)(DocumentParser xml, string attrName)
{
string s = xml.tag.attr[attrName];
T attr = parse!T(s);
return attr;
}
unittest
{
auto xml = new DocumentParser(`<test key="1"></test>`);
auto key = xml.getAttr!int("key");
assert(key == 1);
}
void main()
{}
Ali
Thanks