[
Lists Home |
Date Index |
Thread Index
]
On Jan 12, 2005, at 4:36 PM, Uche Ogbuji wrote:
> * Add binderytools.pushbind. This one deserves some elaboration.
>
> The following is complete code for iterating through address labels in
> an
> XML document, while never loading more memory than needed to hold one
> label
> element:
>
> from amara import binderytools
> for subtree in binderytools.pushbind('/labels/label',
> source='labels.xml'):
> print subtree.label.name, 'of', subtree.label.address.city
>
Very handy!
FYI, analog example Java code for the current Nux version reads as
follows:
StreamingTransform myTransform = new StreamingTransform() {
public Nodes transform(Element subtree) {
System.out.println(XQueryUtil.xquery(subtree,
"name").get(0).getValue());
System.out.println("of");
System.out.println(XQueryUtil.xquery(subtree,
"address/city").get(0).getValue());
return new Nodes(); // mark current element as subject to
garbage collection
}
};
Builder builder = new Builder(new StreamingPathFilter("/labels/label",
null).createNodeFactory(null, myTransform));
builder.build(new File("labels.xml"));
It's not as compact as with Amara, but still quite handy...
|