I found std.xml useless too, so I wrote my own lib. https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff
Grab dom.d from there. First, convert your file to UTF-8. My lib might work for you, but it assumes utf-8 so it will throw if it actually encounters a non-ascii character from the 8859-1 charset. Anyway the D code for dealing with that would look something like this: import std.file; import std.stdio; import arsd.dom; void main() { auto document = new Document(readText("bible.xml")); // the document is now the bible auto books = document.getElementsByTagName("b"); foreach(book; books) { auto nameOfBook = b.n; // "Genesis" for example. All xml attributes are available this same way auto chapters = book.getElementsByTagName("c"); foreach(chapter; chapters) { auto verses = chapter.getElementsByTagName("v"); foreach(verse; verses) { auto v = verse.innerText; // let's write out a passage writeln(nameOfBook, " ", chapter.n, ":", verse.n, " ", v); // prints "Genesis 1:1 In the beginning, God created [...] } } } }