35

以下のコードを実行しようとすると、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のPython2.6を使用しています。Xpath構文を間違って使用していますか?

基本的に、特定のテキストを含むStepText要素が含まれている場合は、すべてのScript要素のname属性を表示したいと思います。

4

1 に答える 1

54

私が言う必要があったことが判明しました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
于 2011-03-31T14:27:50.847 に答える