Python - ElementTree-不能在元素上使用绝对路径

时间:2011-03-31 14:02:43

标签: python xpath elementtree

当我尝试运行以下代码时,我在ElementTree中收到此错误:

SyntaxError: cannot use absolute path on element

我的XML文档如下所示:

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

代码:

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")

我在Mac上使用Python 2.6。我使用Xpath语法错了吗?

基本上我想显示每个脚本元素名称属性,如果它包含带有特定文本的StepText元素。

1 个答案:

答案 0 :(得分:41)

原来我需要说target.findall(".//StepText")。我想没有'。'的事情。被认为是一条绝对的道路?

更新了工作代码:

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