You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@xerces.apache.org by Gilles FILIPPINI <Gi...@edf.fr> on 2000/02/18 11:53:22 UTC

[Xerces C++] Usage

Hello again,

I encounter some difficulties navigating into a DOM tree.
Let's say I have a DOM tree built from the following piece of XML :

<?xml version='1.0'?>
<MyStruct>
	<Level1>
		<Level2>foo</Level2>
		<Level2>foo1</Level2>
		<Level2>foo2</Level2>
		<Level2>foo3</Level2>
	</Level1>
	<Level1>
		<Level2>foo10</Level2>
		<Level2>foo11</Level2>
		<Level2>foo12</Level2>
	</Level1>
</MyStruct>

For each "Level1" element, I'd like to process all the "Level2" elements into it.

I know how to process each "Level1" element :

void MyClass::ProcessDocument(DOM_Document doc)
{
	DOM_NodeList dnl = doc.getElementsByTagName("Level1");
	for (unsigned int i = 0; i < dnl.getLength(); i++) {
		ProcessLevel1Element(dnl.item(i));
	}
}

But then, I don't know how to do to process "Level2" elements :

void MyClass::ProcessLevel1Element(DOM_Node l1)
{
	// I'd like to cast l1 into a DOM_Element to be able
	// to use getElementsByTagName("Level2") but it seems
	// impossible...
}

Did I miss a point ?
Thanks in advance.

- Gilles.

Re: [Xerces C++] Usage

Posted by Markus Braasch <br...@ponton-software.de>.
Hi Gilles,

Casting l1 to DOM_Element would the best solution, as far as I know. What kind of error
message to you get while doing it? Did you remember to call getChildNodes() on every
Level2 item to access the element values?

Regards,
Markus


---- snip ----

I know how to process each "Level1" element :

void MyClass::ProcessDocument(DOM_Document doc)
{
	DOM_NodeList dnl = doc.getElementsByTagName("Level1");
	for (unsigned int i = 0; i < dnl.getLength(); i++) {
		ProcessLevel1Element(dnl.item(i));
	}
}

But then, I don't know how to do to process "Level2" elements :

void MyClass::ProcessLevel1Element(DOM_Node l1)
{
	// I'd like to cast l1 into a DOM_Element to be able
	// to use getElementsByTagName("Level2") but it seems
	// impossible...
}

Did I miss a point ?
Thanks in advance.

- Gilles.