对std.xml感到困惑 - 如何读取属性?

时间:2014-02-17 23:55:16

标签: xml parsing d

我刚刚为我正在编写的命令行工具抛出一个XML控制文件来管理我的编译器。我的目标是基本上使用这个XML文件来获取像shell compile d -release foo.d这样的语句,处理它以形成dmd -m64 -O -inline -release -noboundscheck foo.d并执行它。为清楚起见,我在这里复制了XML文件:

<compilers>
<compiler id="d">
    <command>"dmd -m64"</command>
    <modes>
        <mode id="-debug">"-debug -unittest -w -de"</mode>
        <mode id="-release">"-O -inline -release -noboundscheck"</mode>
    </modes>
</compiler>
<compiler id="java">
    <command>"javac"</command>
    <modes>
        <mode id="-debug">"-g -Xlint"</mode>
    </modes>
</compiler>

现在,从我对std.xml的阅读中,我必须做这样的事情:

import std.xml, std.stdio, std.string, std.file;

void main(string[] args) {
    auto from_command_line = someFunctionThatDealsWithInput(args);
    string s = cast(string)std.file.read("path/to/xml/file.xml");
    check(s);
    auto parsed = DocumentParser(s);
    //deal with the XML somehow to construct a valid command line command
    //send it to the shell
 }

我知道如何在shell上执行操作,但我不确定如何使用std.xml API来使用XML文档。特别是,我不清楚如何获取节点属性的内容(但说实话,整件事对我来说没有多大意义)。

1 个答案:

答案 0 :(得分:2)

我可以建议使用KXML(https://github.com/opticron/kxml)吗?我发现用它解析XML非常容易(特别是对于内置的XPath请求)。