XML help
Diez B. Roggisch
deets at web.de
Sun Jun 5 10:34:40 EDT 2005
>
> I've managed to test for specific elements and extract values. I want to
> place the reults in arrays with array index equal to element ID. So as I
> walk the tree I temporarily store IDs and DeptValues in lists. I'm ok so
> far. I then intend to create an array of size determined by the maximum
> value of ID. So in the sample above the array size will be 8 even though
> only three entries exist.
That sounds wrong. If what you want is a mapping between keys (your IDs)
and values, you need to use a dcitionary. Like this:
mapping[myid] = value
>
> At this point I'm stuck because I want to do this latter array creation and
> processing when I "see" the /Block end of block tag. However I can't figure
> out how to do that. Obviously I'm not understanding something about XML DOM
> trees and Elements because when I try to print all elements I never see an
> end tag for any. I'm obviously approaching this from a readline and process
> point of view which is probably half the problem.
Your misunderstanding the nature of nodes in dom: a node in dom _is_ the
start and end-tag. If you have a dom-tree that you serialize, a node in
there will either be serialized as
<name/>
if it has no childs, or as
<name>
...
</name>
if it has childs. So the other way round, for a well-formed xml document
parsed to a dom, you end up with one node for all pairs of
opening/closing tags.
If a end-tag is what you're after, you migth want to look into the
event-driven XML api, SAX. But then you'll have other tradeoffs compared
to dom': all statekeeping has to be done by yourself. It's up to you to
chose.
Regards,
Diez
More information about the Python-list
mailing list