2009-09-03 5 views
11

में एक्सएमएल पार्सिंग मैं पाइथन का उपयोग करके एक साधारण, छोटी एक्सएमएल फ़ाइल को पार्स करना चाहता हूं हालांकि पीईएक्सएमएल पर काम बंद हो गया है। यदि संभव हो तो मैं पायथन 2.6 का उपयोग करना चाहता हूं। क्या कोई एक्सएमएल पार्सर की सिफारिश कर सकता है जो 2.6 के साथ काम करेगा?पाइथन

धन्यवाद

उत्तर

18

यह छोटे और फिर आसान है, तो बस use the standard library:

from xml.dom.minidom import parse 
doc = parse("filename.xml") 

यह एक डोम पेड़ मानक Document Object Model API

को लागू करने वापसी आप बाद में स्कीमा मान्यता की तरह जटिल काम करने की जरूरत है जाएगा या XPath क्वेरीिंग तो मैं तीसरे पक्ष lxml module की अनुशंसा करता हूं, जो लोकप्रिय libxml2 सी लाइब्रेरी के चारों ओर एक रैपर है।

+2

धन्यवाद! बहुत आसान है। – Alex

3

lxml आपकी आवश्यकताओं के अनुरूप होगा? यह पहला टूल है जिसे मैं एक्सएमएल पार्सिंग के लिए बदलता हूं।

+3

इसके अतिरिक्त, पायथन 2.5+ में एट्री एकीकृत है। यह एलएक्सएमएल के सबसेट में क्या मात्रा लागू करता है। मैं सरल एक्सएमएल प्रोसेसिंग और एलएक्सएमएल के लिए एट्री का उपयोग करता हूं जब मुझे कुछ भी चाहिए जो ईट्री काफी कवर नहीं करता है। –

5

Here स्पष्टीकरण के साथ मिनीडॉम का उपयोग करने के तरीके पर भी एक बहुत अच्छा उदाहरण है।

+0

लिंक इसके सामने www के बिना होमपेज पर रीडायरेक्ट प्रतीत होता है। यह एक कामकाजी लिंक है: http://www.diveintopython.net/xml_processing/index.html – Husky

+0

लिंक फिक्स्ड। धन्यवाद! –

1

कुछ साल पहले, मैंने संरचित एक्सएमएल के साथ काम करने के लिए एक लाइब्रेरी लिखी थी। यह कुछ सीमित धारणाओं को बनाकर एक्सएमएल को सरल बनाता है।

आप वर्ड प्रोसेसर दस्तावेज़ की तरह कुछ के लिए एक्सएमएल का उपयोग कर सकते हैं, इस मामले में आपके पास जगह पर एम्बेडेड एक्सएमएल टैग के साथ सामान का एक जटिल सूप है; इस मामले में मेरी लाइब्रेरी अच्छी नहीं होगी।

लेकिन यदि आप कॉन्फ़िगरेशन फ़ाइल की तरह कुछ के लिए XML का उपयोग कर रहे हैं, तो मेरी लाइब्रेरी अपेक्षाकृत सुविधाजनक है। आप कक्षाओं को परिभाषित करते हैं जो आपके इच्छित XML की संरचना का वर्णन करते हैं, और एक बार आपके पास कक्षाएं हो जाने के बाद, XML में slurp करने और इसे पार्स करने का एक तरीका है। वास्तविक पार्सिंग xml.dom.minidom द्वारा की जाती है, लेकिन फिर मेरी लाइब्रेरी डेटा निकालती है और इसे कक्षाओं में रखती है।

सबसे अच्छा हिस्सा: आप "संग्रह" प्रकार घोषित कर सकते हैं जो शून्य या अधिक अन्य XML तत्वों के साथ एक पायथन सूची होगी। एटम या आरएसएस फ़ीड जैसी चीजों के लिए यह बहुत अच्छा है (जो मूल कारण था कि मैंने पुस्तकालय बनाया था)। http://home.avvanta.com/~steveha/xe.html

मैं आप किसी भी है, तो सवालों के जवाब देने में खुशी होगी:

URL यह।

6

अपने कार्यों से ज्यादातर के लिए मैं minidom हल्के डोम कार्यान्वयन का इस्तेमाल किया है, आधिकारिक पेज से:

from xml.dom.minidom import parse, parseString 

dom1 = parse('c:\\temp\\mydata.xml') # parse an XML file by name 

datasource = open('c:\\temp\\mydata.xml') 
dom2 = parse(datasource) # parse an open file 

dom3 = parseString('<myxml>Some data<empty/> some more data</myxml>')