Jump to page: 1 2
Thread overview
xml Bible for conversion for D
Oct 19, 2011
Joel Christensen
Oct 19, 2011
Jesse Phillips
Oct 19, 2011
Joel Christensen
Oct 19, 2011
Bernard Helyer
Oct 19, 2011
Bernard Helyer
Oct 19, 2011
Bernard Helyer
Oct 19, 2011
Joel Christensen
Oct 19, 2011
Bernard Helyer
Oct 19, 2011
Jesse Phillips
Oct 19, 2011
Adam Ruppe
Oct 19, 2011
Joel Christensen
October 19, 2011
I've got xml text of a Bible version. I want to get the text in the following format:

class Bible {
  Book[] bs;
}

class Book {
  Chapter[] cs;
}

class Chapter {
  Verse[] vs;
}

class Verse {
  string v;
}

Here's a part of the xml file:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bible>
<b n="Genesis">
<c n="1">
<v n="1">In the beginning, God created the heavens and the earth.</v>
<v n="2">The earth was without form and void, and darkness was over the face of the deep. And the Spirit of God

I would like any pointers on xml with D.

- Joelcnz
October 19, 2011
I suggest xmlp

http://www.dsource.org/projects/xmlp/

Example:

http://www.dsource.org/projects/xmlp/browser/trunk/test/books.d

He intends to push for it to be in Phobos so it uses the std namespace.

import std.xml2;

On Wed, 19 Oct 2011 17:31:06 +1300, Joel Christensen wrote:

> I would like any pointers on xml with D.
> 
> - Joelcnz

October 19, 2011
I think I want to stick with the current std xml library for now.

I think the books example is too different for me to work for what I want.
October 19, 2011
On Wed, 19 Oct 2011 18:21:22 +1300, Joel Christensen wrote:

> I think I want to stick with the current std xml library for now.

No, you don't. It's a terrible library, held together by lashings of hate and the power of Satan*





*only half kidding
October 19, 2011
On Wed, 19 Oct 2011 07:03:05 +0000, Bernard Helyer wrote:

> and the power of Satan*

Err, I can see how that could be construed as in poor taste, considering the subject matter of the XML document. I meen no offense. >_<
October 19, 2011
On Wed, 19 Oct 2011 07:04:53 +0000, Bernard Helyer wrote:

> meen

Just not my day, is it?
October 19, 2011
I don't care to learn xml at this stage. I just want to use it on that Bible file.

On 19-Oct-11 8:03 PM, Bernard Helyer wrote:
>
>> I think I want to stick with the current std xml library for now.
>

October 19, 2011
On Wed, 19 Oct 2011 21:45:29 +1300, Joel Christensen wrote:

> I don't care to learn xml at this stage.

What do you mean by "learn xml"? I'm saying std.xml is a terrible library, and furthermore will be deprecated sooner or later. Use another library. There is already a suggestion in this thread, and I can give one too if you want. Friends don't let friends use std.xml.
October 19, 2011
On Wed, 19 Oct 2011 18:21:22 +1300, Joel Christensen wrote:

> I think I want to stick with the current std xml library for now.
> 
> I think the books example is too different for me to work for what I want.

std.xml has had many bugs, and hasn't had most of them fixed. It might work for your desire, but it is a bad idea to rely on such.

xmlp is about the same as std.xml so you're going to have to learn something about parsing with delegates.
October 19, 2011
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 [...]
            }
       }
    }
}
« First   ‹ Prev
1 2