我刚刚为我正在编写的命令行工具抛出一个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文档。特别是,我不清楚如何获取节点属性的内容(但说实话,整件事对我来说没有多大意义)。