Разбор XML в D - PullRequest
       28

Разбор XML в D

3 голосов
/ 20 марта 2012

Я пытаюсь разобрать XML-документ, в котором хранятся данные для карты в моей 2D-игре. Я пытаюсь сделать это шаг за шагом, я загрузил файл, создал новый анализатор документов и выбрал стартовый тег и атрибут, который я хочу получить. Однако, когда я проверяю, какое значение атрибута должно быть (25), оно получается равным нулю. Скажите мне, что я что-то упустил, и он не извлекает значение XML.

Это анализируемый файл XML: http://pastebin.com/tpUU1Wtv

    void LoadMap(string filename)
{
    enforce( filename != "" , "Filename is invalid!" );

    xmlData = cast(string) read(filename);

    enforce( xmlData != "", "Read file Failed!" );

}

void ParseMap()
{
    auto xml = new DocumentParser(xmlData);

    xml.onStartTag["map"] = (ElementParser e)
    {
        mapWidth = to!int(e.tag.attr["width"]);
    };
    xml.parse();
    writeln("Map Width: ", mapWidth);
}

Ответы [ 2 ]

3 голосов
/ 20 марта 2012

Нынешний модуль xml кажется немного глючным, я думаю, что работает над альтернативой.

Причина, по которой ваш код не работает, заключается в том, что по какой-то причине парсер игнорирует внешний тег. Который в вашем случае является «карта». Если вы оберните тег карты в фиктивный тег, то вдруг он сработает.

<dummy>
   <map...>
    ...
   </map>
</dummy>
1 голос
/ 22 марта 2012

Можно ли использовать YAML? D-YAML?

...