Parsing with dxml

Joel joelcnz at gmail.com
Wed Nov 20 09:26:19 UTC 2019


On Wednesday, 20 November 2019 at 00:07:53 UTC, Joel wrote:
> On Tuesday, 19 November 2019 at 14:20:39 UTC, Kagamin wrote:
>> On Monday, 18 November 2019 at 06:44:43 UTC, Joel wrote:
>>> ```
>>> <?xml version="1.0"?>
>>>
>>> <resultset statement="SELECT * FROM bible.t_asv
>>> " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>>>   </row>
>>>
>>> ```
>>
>> You're missing a closing tag.
>
> I can store the ASV Bible in an array (I check for if the last 
> book, chapter, and verse number instead of a closing tag). But 
> I haven't figured out how to get it into the class's setup I've 
> got.

Ok, got it working. Though didn't use any xml tools, just split 
the xml file into lines, and went from there. I used my trace 
function in a mixin for tracing what was happening, from simple 
code I reuse in my programs - I shows the variable and its value 
without having to write the variable twice.

```
	g_bible = new Bible;

	int b, c, v;
	size_t j;
	break0: do {
		b = verses[j].b;
		g_bible.m_books ~= new Book(bookNames[b-1]);
		version(asvtrace)
			mixin(trace("g_bible.m_books[$-1].m_bookTitle"));
		do {
			c = verses[j].c;
			g_bible.m_books[$-1].m_chapters ~= new Chapter(c.to!string);
			version(asvtrace)
				mixin(trace("j 
g_bible.m_books[$-1].m_chapters[$-1].m_chapterTitle".split));
			do {
				v = verses[j].v;
				g_bible.m_books[$-1].m_chapters[$-1].m_verses ~= new 
Verse(v.to!string);
				g_bible.m_books[$-1].m_chapters[$-1].m_verses[$-1].verse = 
verses[j].t;
				version(asvtrace)
					mixin(trace(("j 
g_bible.m_books[$-1].m_chapters[$-1].m_verses[$-1].m_verseTitle" ~
						" 
g_bible.m_books[$-1].m_chapters[$-1].m_verses[$-1].verse").split));
				j += 1;
				if (j == verses.length)
					break break0;
			} while(verses[j].v != 1);
		} while(verses[j+1].c != 1);
	} while(true);
```


More information about the Digitalmars-d-learn mailing list