2010-09-17 12 views
5

मैं एक xml फ़ाइल है, book.xml (http://msdn.microsoft.com/en-us/library/ms762271(VS.85).aspx)अजगर lxml और stdin

मैं बिल्ली books.xml चाहते और पुस्तक आईडी के लिए सभी पुस्तक आईडी और शैलियों मिलेगा।

cat books.xml | python reader.py 

कोई युक्ति या मदद करने के लिए इसी तरह की सराहना की जाएगी। धन्यवाद।

+0

उपरोक्त क्योंकि lxml दस्तावेज एक गड़बड़ है। –

+0

पायथन reader.py books.xml - कम टाइपिंग और अधिक कुशल। Sys.argv का प्रयोग करें। –

+0

यह तब तक बढ़िया काम करता है जब तक कि आप इसे किसी ऐसे प्रोग्राम से कनेक्ट नहीं करना चाहते जो xml फ़ाइल को stdout पर आउटपुट करता हो। –

उत्तर

11

stdin से एक XML फ़ाइल पढ़ने के लिए, बस etree.parse का उपयोग करें। यह फ़ंक्शन एक फ़ाइल ऑब्जेक्ट स्वीकार करता है, जो sys.stdin हो सकता है।

import sys 
from lxml import etree 

tree = etree.parse(sys.stdin) 

print ([(b.get('id'), b.findtext('genre')) for b in tree.iterfind('book')]) 
+0

+1। कॉम्पैक्ट और पढ़ने के लिए आसान है। –