2011-03-31 10 views
16

मैं 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") 

मै मैक पर पायथन 2.6 पर हूं। क्या मैं एक्सपैथ वाक्यविन्यास का उपयोग कर गलत हूं?

असल में मैं प्रत्येक स्क्रिप्ट तत्वों का नाम विशेषता दिखाना चाहता हूं यदि इसमें कुछ पाठ के साथ एक चरण टेक्स्ट तत्व है।

उत्तर

33

बाहर निकलता है मुझे लक्ष्य.फिंडल (".// चरण टेक्स्ट") कहने की आवश्यकता है। मुझे '।' के बिना कुछ भी लगता है एक पूर्ण पथ माना जाता है?

अपडेट किया गया काम कर कोड:

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

कोई XPath अभिव्यक्ति के साथ '/' या '//' ऑपरेटर शुरू कर एक पूर्ण अभिव्यक्ति है। इसके अलावा, उस प्रतिबंध (रूट के मुकाबले अन्य संदर्भ नोड के साथ पूर्ण अभिव्यक्तियों की अनुमति नहीं है) आपके XPath इंजन कार्यान्वयन के लिए विशिष्ट है। –

+0

@ user357812 यह पूछने का एक तरीका है कि कौन सा इंजन एक विशेष XPath कार्यान्वयन का उपयोग कर रहा है? – jxramos

संबंधित मुद्दे