2009-11-16 4 views
8

यह बनाने में सक्षम होना चाहिए, संशोधित और में एक्स/एचटीएमएल पढ़ एक बेहद वस्तु उन्मुख तरह से अभी भी मानना ​​है कि डोम पसंद है, लेकिन मोटे नहीं है, और वास्तव में pythonic है। अधिमानतः यह विकृत HTML से भी निपटेंगे, लेकिन हम इसे टेम्पलेट्स के लिए छोड़ सकते हैं।सबसे पायथनिक एक्सएचटीएमएल/एचटीएमएल पार्सर/जेनरेटर/टेम्पलेट मॉड्यूल क्या है जो डीओएम को एक्सेस की तरह समर्थन करता है?

उदाहरण के लिए, मैं यह करने के लिए करना चाहते हैं:

>> html.head.append(stylesheet(href="main.css")) 
>> html.body.append(h1('BIG TITLE!12',Class="roflol")) 
>> html.body.SOURCE 
<body> 
    <h1 class="roflol"> 
     BIG TITLE!12 
    </h1> 
</body> 

नोट:: ऐसा नहीं है, तो

>> from someAmazingTemplate import * 
>> html = Template('<html><head><title>Hi</title></head><body></body></html>') 
>> html.head.append('<link type="text/css" href="main.css" rel="stylesheet" />') 
>> html.head.title 
Hi 
>> html['head']['title'] 
Hi 

मैं उपयोग/लघु कार्यों को परिभाषित करने और उन्हें इस तरह का उपयोग करने में सक्षम होना चाहिए अस्तित्व में नहीं है, मैं इसे बीएसडी/एमआईटी/पायथन लाइसेंस के तहत बनाने जा रहा हूं। सहायता का स्वागत है। जो कुछ भी पाइथोनिक वेब ऐप विकास की ओर काम करता है वह बहुत अच्छा होगा। बहुत सराहना करते हैं!

-लूका स्टेनली

+0

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

+0

सिनाक के एलिमेंट ट्री उदाहरण भी एक बहुत अच्छा आधार दिखाता है, मैं प्रगति पोस्ट करूंगा –

उत्तर

5

पहले भाग कर सकते हैं, लेकिन यह कुछ और कदम उठा लेता:

>>> import xml.etree.ElementTree as ET 
>>> html = ET.XML('<html><head><title>Hi</title></head><body></body></html>') 
>>> html.head = html.find('head') 
>>> html.head.append(ET.XML('<link type="text/css" href="main.css" rel="stylesheet" />')) 
>>> html.head.title = html.head.find('title') 
>>> html.head.title.text 
'Hi' 

दूसरे भाग तत्व वस्तुओं बनाने के द्वारा पूरा किया जा सकता,

>>> html.body = html.find('body') 
>>> my_h1 = ET.Element('h1', {'class': 'roflol'}) 
>>> my_h1.text = 'BIG TITLE!12' 
>>> html.body.append(my_h1) 
>>> html.body.SOURCE = ET.tostring(html.body) 
>>> html.body.SOURCE 
'<body><h1 class="roflol">BIG TITLE!12</h1></body>' 

आप अपनी खुद की की एक stylesheet समारोह बना सकते हैं: लेकिन आप इसे जिस तरह से आप वास्तव में चाहते हैं ऐसा करने के लिए अपने काम से कुछ करने की ज़रूरत होगी

>>> def stylesheet(href='', type='text/css', rel='stylesheet', **kwargs): 
...  elem = ET.Element('link', href=href, type=type, rel=rel) 
...  return elem 
... 
>>> html.head.append(stylesheet(href="main.css")) 

और पूरे दस्तावेज़:

>>> ET.tostring(html) 
<html><head><title>Hi</title><link href="main.css" rel="stylesheet" type="text/css" /></head><body><h1 class="roflol">BIG TITLE!12</h1></body></html> 

लेकिन, मुझे लगता है कि आप अपने खुद के बात लिख खत्म करने के लिए जा रहे हैं, यह एक अच्छी जगह शुरू करने के लिए है। ElementTree बहुत शक्तिशाली है।

संपादित करें: मुझे एहसास है कि यह शायद वही नहीं है जो आप खोज रहे हैं। मैं बस कुछ उपलब्ध विकल्प के रूप में कुछ प्रदान करना चाहता था और यह भी साबित करना चाहता था कि यह वास्तव में बहुत अधिक काम किए बिना किया जा सकता है।

+0

बहुत सारे धन्यवाद सिनाक। मैं कोशिश करता हूं और देखता हूं कि क्या मैं इसे कुछ रैपरों के साथ निर्दिष्ट करता हूं। क्या आप अद्यतित रहना चाहते हैं? मैं यहां एक फॉलोअप पोस्ट करूंगा। –

+0

बिल्कुल, मुझे यह देखना अच्छा लगेगा कि यह कैसे निकलता है। मुझे लगता है कि यह मजेदार लगता है। – jathanism

+0

मैं वास्तव में इसे एमवीसी के हिस्से के रूप में उपयोग कर रहा हूं। मैं इसे मध्यस्थ मॉडल के रूप में उपयोग करना चाहता हूं। मेरे पास templating भाषाओं का उपयोग करने के खिलाफ कुछ भी नहीं है। यदि पीईजेएस (पायजामा) के साथ संयुक्त हो, तो यह काफी शक्तिशाली जानवर हो सकता है। मैं हालांकि थोड़ा JQuery का उपयोग करना चाहता हूँ। –

1

Amara Bindery सबसे pythonic XML API मैंने देखा है प्रदान करता है। अधिकांश भाग के ElementTree द्वारा किया जा के लिए quick reference, manual और faq

+0

एक अच्छा आधार हो सकता है, धन्यवाद क्वार्क! * जांच * –

+0

आप जानते हैं कि यह सबसे अधिक आशाजनक दिख रहा है अब मेरे पास इसकी तुलना करने के लिए और अधिक समय है। हालांकि यह मेरे एचटीएमएल की शुरुआत में डालने वाला है। मैं अभी एक फिक्स की तलाश में हूं। –

+0

मैं नवीनतम संस्करण संकलित है, तो यह काम किया: >>> Amara आयात * >>> डॉक = पार्स से (' हाय') >>> प्रिंट doc.xml_encode ((" एचटीएमएल-इंडेंट ")) हाय अधिक उदाहरण और –

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