digitalmars.D.learn - xml Bible for conversion for D
- Joel Christensen (24/24) Oct 18 2011 I've got xml text of a Bible version. I want to get the text in the
- Jesse Phillips (7/10) Oct 18 2011 I suggest xmlp
- Joel Christensen (2/2) Oct 18 2011 I think I want to stick with the current std xml library for now.
- Bernard Helyer (4/5) Oct 19 2011 No, you don't. It's a terrible library, held together by lashings of hat...
- Bernard Helyer (3/4) Oct 19 2011 Err, I can see how that could be construed as in poor taste, considering...
- Bernard Helyer (2/3) Oct 19 2011 Just not my day, is it?
- Joel Christensen (3/4) Oct 19 2011 I don't care to learn xml at this stage. I just want to use it on that
- Bernard Helyer (5/6) Oct 19 2011 What do you mean by "learn xml"? I'm saying std.xml is a terrible
- Jesse Phillips (5/9) Oct 19 2011 std.xml has had many bugs, and hasn't had most of them fixed. It might
- Adam Ruppe (28/28) Oct 19 2011 I found std.xml useless too, so I wrote my own lib.
- Joel Christensen (4/4) Oct 19 2011 Thanks Adam. :-) It seems to be working now, with the stuff you gave me.
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
Oct 18 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
Oct 18 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.
Oct 18 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
Oct 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. >_<
Oct 19 2011
On Wed, 19 Oct 2011 07:04:53 +0000, Bernard Helyer wrote:meenJust not my day, is it?
Oct 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.
Oct 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.
Oct 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.
Oct 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 [...] } } } }
Oct 19 2011
Thanks Adam. :-) It seems to be working now, with the stuff you gave me. I was thinking of making a text file from it that my programs can load from. avoiding the xml file, so they load faster. But I think I'll have my program(s) use the xml file each time they're run, in the mean time.
Oct 19 2011