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.
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