perhaps loop through each stage and check its children

root = ET.fromstring(xmldata)

stages = root.findall("./ep_150/stage")

print '\n\nreviews for id=p4645\n'

for stage in stages:

        children = stage.getchildren()

        for child in children:

                if child.attrib['id']=='p4645':

                        print('%s - %s' % (stage.attrib['name'], 
child.attrib['name']))


On Thu, Nov 1, 2012 at 12:23 AM, PBLN RAO <[email protected]> wrote:

>
>
> I am trying to retrieve data from xml.etree.cElementTree.
>
> i have the following code
>
> *Code Snippet*
>
>
> import xml.etree.cElementTree as ET
>
> xmldata ="""
> <pipeline>
>     <ep_150>
>         <stage name="lay" longname="layout" department="layout" 
> process="production">
>             <review name="R1" reviewer="sridhar reddy" role="supervisor" 
> id="p1234">
>             </review>
>         </stage>
>         <stage name="lip" longname="lipsync" department="lipsync" 
> process="production">
>             <review name="R2" reviewer="someone" role="supervisor" id="p2345">
>             </review>
>         </stage>
>         <stage name="blk" longname="blocking" department="animation" 
> process="production">
>             <review name="R3" reviewer="sudeepth" role="supervisor" 
> id="p4645" dependson='R1'>
>             </review>
>             <review name="R4" reviewer="chandu" role="director" id="p5678">
>             </review>
>         </stage>
>         <stage name="pri" longname="primary" department="animation" 
> process="production">
>             <review name="R5" reviewer="sudeepth" role="supervisor" 
> id="p4645" style="dep" >
>             </review>
>             <review name="R6" reviewer="sudeepth" role="bld_supervisor" 
> id="p2556" style="dep">
>             </review>
>         </stage>
>         <stage name="sec" longname="secondary" department="animation" 
> process="production">
>             <review name="R7" reviewer="sha" role="supervisor" id="p1234" 
> style="dep">
>             </review>
>             <review name="R8" reviewer="chandu" role="director" id="p5678">
>             </review>
>         </stage>
>     </ep_150>
> </pipeline>
> """
> root = ET.fromstring(xmldata)
> review = root.findall("./ep_150/stage/review")
> print '\n\nreviews for id=p4645\n'
> for rev in review:
>
>     if rev.attrib['id']=='p4645':
>         print (rev.attrib['name'])
>
> with the above code i am getting the result as below
>
> reviews for id=p4645
>
> R3
>
> R5
>
> *But i need the output as*
>
> reviewes for id=p4645
>
> blk - R3
>
> pri - R5
>
> i.e, i need the parent tag along with the element using Xpaths.
>
> I know its possible if i iterate through entire tree. But need to use more
> loops.
>
> --
> view archives: http://groups.google.com/group/python_inside_maya
> change your subscription settings:
> http://groups.google.com/group/python_inside_maya/subscribe
>

-- 
view archives: http://groups.google.com/group/python_inside_maya
change your subscription settings: 
http://groups.google.com/group/python_inside_maya/subscribe

Reply via email to