2011-03-31 18 views
16
Ben elementtree bu hatayı alıyorum

üzerinde mutlak yolunu kullanamazsınız:Python - Ben aşağıdaki kodu çalıştırmayı denediğinizde ElementTree- elemanı

SyntaxError: cannot use absolute path on element 

Benim XML belgesi şuna benzer:

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

Kodu: Ben Mac Python 2.6 olduğum

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

. Xpath sözdizimini yanlış mı kullanıyorum?

Temel olarak, belirli bir metne sahip bir StepText öğesi içeriyorsa, her Script öğe adı niteliğini göstermek istiyorum.

cevap

33

Hedef.findall (".// StepText") belirtmem gerekiyor. Sanırım hiçbir şey yok. mutlak bir yol olarak kabul edilir?

Güncel çalışma kodu:

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 
+5

'/ 'ya da' // 'operatör ile başlayan bir XPath ifadesi mutlak ifadesidir. Bunun yanı sıra, bu kısıtlama (root'dan başka bir bağlamsal düğüme izin verilmeyen mutlak ifadeler), XPath motor uygulamanıza özgüdür. –

+0

@ user357812, belirli bir XPath uygulamasının hangi motoru kullandığını sorgulamanın bir yolu var mı? – jxramos

İlgili konular