2011-02-27 12 views
5

में नाम में मैं एक वर्डप्रेस निर्यात दस्तावेज़ (यह एक्सएमएल, कुछ हद तक आरएसएस की तरह) को पार्स करने के लिए lxml.etree का उपयोग करने का प्रयास कर रहा हूं। मैं केवल प्रकाशित पोस्ट में रुचि हूँ, इसलिए मैं प्रकाशित पदों के माध्यम से लूप के लिए निम्न का उपयोग कर रहा:।टैग के साथ: lxml

for item in data.findall("item"): 
    if item.find("wp:post_type").text != "post": 
     continue 
    if item.find("wp:status").text != "publish": 
     continue 
    write_post(item) 

जहां data टैग है कि सभी item टैग में पाए जाते हैं item टैग शामिल पदों, पृष्ठ, और ड्राफ्ट। मेरी समस्या यह है कि lxml उन टैग्स को नहीं ढूंढ सकता है जिनके नाम पर : है (उदा। wp:post_type)। मुझे लगता है KeyError : ':' टैग अमान्य किया जा रहा है के नाम पर पेट के लिए संदर्भित करता है

Traceback (most recent call last): 
    File "<input>", line 1, in <module> 
    File "lxml.etree.pyx", line 1279, in lxml.etree._Element.find (src/lxml/lxml.e 
tree.c:38124) 
    File "/usr/lib64/python2.7/site-packages/lxml/_elementpath.py", line 210, in f 
ind 
    it = iterfind(elem, path) 
    File "/usr/lib64/python2.7/site-packages/lxml/_elementpath.py", line 200, in i 
terfind 
    selector = _build_path_iterator(path) 
    File "/usr/lib64/python2.7/site-packages/lxml/_elementpath.py", line 184, in _ 
build_path_iterator 
    selector.append(ops[token[0]](_next, token)) 
KeyError: ':' 

: जब मैं item.find("wp:post_type") कोशिश मैं इस त्रुटि मिलती है। क्या कोई रास्ता है कि मैं कोलन से बच सकता हूं ताकि एलएक्सएमएल सही टैग पा सके? : इस संदर्भ में कुछ विशेष अर्थ है? या मुझ से कुछ गलत हो रहा है? किसी भी सहायता की सराहना की जाएगी।

उत्तर

9

: एक एक्सएमएल नेमस्पेस विभाजक है। एलएक्सएमएल में कोलन से बचने के लिए, आपको item.find("{http://example.org/}status").text में घुंघराले ब्रेसिज़ के भीतर नामस्थान URL के साथ इसे प्रतिस्थापित करने की आवश्यकता है।

+0

धन्यवाद, यह मेरी समस्या हल हो गया। –

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