Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python - ElementTree- cannot use absolute path on element

I'm getting this error in ElementTree when I try to run the code below:

SyntaxError: cannot use absolute path on element 

My XML document looks like this:

<Scripts>   <Script>     <StepList>       <Step>         <StepText>         </StepText>         <StepText>         </StepText>       </Step>     </StepList>   </Script> </Scripts> 

Code:

import xml.etree.ElementTree as ET  def search():     root = ET.parse(INPUT_FILE_PATH)     for target in root.findall("//Script"):         print target.attrib['name']         print target.findall("//StepText") 

I'm on Python 2.6 on Mac. Am I using Xpath syntax wrong?

Basically I want to show every Script elements name attribute if it contains a StepText element with certain text.

like image 827
Greg Avatar asked Mar 31 '11 14:03

Greg


1 Answers

Turns out I needed to say target.findall(".//StepText"). I guess anything without the '.' is considered an absolute path?

Updated working code:

def search():     root = ET.parse(INPUT_FILE_PATH)     for target in root.findall("//Script"):         stepTexts = target.findall(".//StepText")         for stepText in stepTexts:             if FIND.lower() in stepText.text.lower():                 print target.attrib['name'],' -- ',stepText.text 
like image 94
Greg Avatar answered Sep 23 '22 08:09

Greg