xml application advice

Peter Otten __peter__ at web.de
Wed Jun 10 11:48:17 EDT 2009


William Purcell wrote:

> I am writing a application to calculate pressure drop for a piping
> network.  Namely a building sprinkler system.  This will be a
> command line program at first with the system described in xml (at
> least that is how I think I want to do it).
> 
> An important part of this calculation is finding the 'hydraulically
> most remote' sprinkler.  This is something that I could specify with
> an attribute for now and later think about how to automate it.  I
> need to walk through the dom tree until I find a node of type
> "sprinkler" that has an attribute of hydraulically_most_remote with
> a value of True.
> 
> After I find this I need to break the itterator/for loop and then
> start walking backwards keeping a running total of the pressure drop
> until I reach a node that has multiple pipesections and then walk to
> the end of each branch and calculate the pressure drop, and then add
> them to the branch that contained the hydraulically most remote
> sprinkler, and then move on, repeating this until I walk all the way
> back to the inflow node.
> 
> I am having trouble finding a decent python/xml resource on the web.
> I have ordered Python & XML by Jones and Drake, but I am anxious to
> get something started.  The only decent online resource that I can
> seem to find is
> 
> http://pyxml.sourceforge.net/topics/howto/xml-howto.html
> 
> which doesn't seem to be a very comprehensive how-to.
> 
> Do demonstrate just about everything I know about xml and python I
> attached t.py and ex.xml.
> 
> Another thing that is confusing is dir(walker) does not show walker
> having an attribute currentNode and dir(walker.currentNode) does not
> show walker.currentNode having an attribute tagName.

I'd probably start with a few python classes representing the sprinkler 
system. The exact layout may change a few times until you have found one 
that makes your questions clear and the calculations as easy as possible.

You can then add a read_model_from_file() function converting the xml into 
your model using ElementTree or its close relative lxml.

My guess is that it'll be a lot more fun this way...

Peter




More information about the Python-list mailing list