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

Reply via email to