मेरे पास पार्स करने के लिए सुपर सरल एक्सएमएल फाइलों का एक सेट है ... लेकिन ... वे कस्टम परिभाषित इकाइयों का उपयोग करते हैं। मुझे इन्हें वर्णों में मैप करने की आवश्यकता नहीं है, लेकिन मैं प्रत्येक पर पार्स करना और कार्य करना चाहता हूं। उदाहरण के लिए:पायथन एलिमेंट ट्री समर्थन?
<Style name="admin-5678">
<Rule>
<Filter>[admin_level]='5'</Filter>
&maxscale_zoom11;
</Rule>
</Style>
वहाँ http://effbot.org/elementtree/elementtree-xmlparser.htm पर एक tantalizing संकेत है कि XMLParser इकाई समर्थन सीमित है, लेकिन मैं तरीकों का उल्लेख नहीं मिल रहा है, सब कुछ त्रुटियों देता है:
#!/usr/bin/python
##
## Where's the entity support as documented at:
## http://effbot.org/elementtree/elementtree-xmlparser.htm
## In Python 2.7.1+ ?
##
from pprint import pprint
from xml.etree import ElementTree
from cStringIO import StringIO
parser = ElementTree.ElementTree()
#parser.entity["maxscale_zoom11"] = unichr(160)
testf = StringIO('<foo>&maxscale_zoom11;</foo>')
tree = parser.parse(testf)
#tree = parser.parse(testf,"XMLParser")
for node in tree.iter('foo'):
print node.text
कौन सा है आप कैसे पर निर्भर करता है टिप्पणियों को समायोजित करने देता है:
xml.etree.ElementTree.ParseError: undefined entity: line 1, column 5
या
AttributeError: 'ElementTree' object has no attribute 'entity'
या
AttributeError: 'str' object has no attribute 'feed'
उत्सुक उन एक्सएमएल OpenStreetMap के mapnik परियोजना से है।
संभवतः संबंधित सवाल: http://stackoverflow.com/questions/2524299/entity-references-and-lxml – unutbu
, संबंधित इसलिए नहीं कि उस मामले में इकाई वास्तव में परिभाषित किया गया है। इकाई परिभाषा को हटाएं और आप मेरे प्रश्न पर वापस आ गए हैं। – Bryce
fyi - कोई/usr/bin/python/usr/bin/env python को ठीक करना चाहता है क्योंकि शेबैंग लाइन अधिकांश सिस्टम के लिए गलत है। –