Python - ElementTree - не может использовать абсолютный путь к элементу - PullRequest
24 голосов
/ 31 марта 2011

Я получаю эту ошибку в 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")

Я на Python 2.6 на Mac.Я неправильно использую синтаксис Xpath?

По сути, я хочу показать каждый атрибут имени элемента Script, если он содержит элемент StepText с определенным текстом.

1 Ответ

41 голосов
/ 31 марта 2011

Оказывается, мне нужно было сказать 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
...