[英]Easy way to get data between tags of xml or html files in python?
[英]fast and easy way to template xml files in python
現在我已經在我的python腳本中硬編碼了整個xml文件,只是做了out.write(),但是現在它變得越來越難以管理,因為我有多種類型的xml文件。
設置模板的最簡單,最快捷的方法是什么,以便我可以給變量名稱amd filename?
輕量級選項是xml.dom.minidom
xml.dom.minidom是文檔對象模型接口的輕量級實現。 它旨在比完整的DOM更簡單,也更小。
您可以使用xml.dom
API創建DOM對象,例如DOM Element對象 ,並使用Node.writexml
生成XML。 請注意,這需要構建DOM層次結構,這可能不是您所追求的。
更多pythonic選項是ElementTree 。
Element類型是一個靈活的容器對象,旨在將分層數據結構存儲在內存中。 該類型可以描述為列表和字典之間的交叉。
ElementTree對象在Python
中更容易創建和處理,並且可以使用ElementTree.dump()或ElementTree.tostring()序列化為XML
兩個選擇。
模板工具,例如Jinja2 。
構建DOM對象。 沒有聽起來那么糟糕。 ElementTree有一個令人愉快的工廠,用於構建XML標簽和創建必要的結構。
簡短的回答是:您應該關注和處理數據(即python對象)而不是原始XML
基本故事: XML應該是某些數據或數據集的表示。 關於數據類型,代表什么等等,你的問題中沒有很多細節 - 所以我會給你一些基本的答案。
Python選擇: BeautifulSoup,lxml和其他python庫(ElementTree等),使得處理XML更加容易。 與我試圖直接使用原始格式的XML相比,它們讓我更容易讀入或寫出XML數據。
在這兩個(輸入,輸出)活動的中間,我的python程序正在處理一個很好的python對象或我可以走的某種解析樹。 您可以讀取數據,從該字符串創建對象,操作它並寫出XML。
其他選擇,模板:好的 - 也許您喜歡XML並且只想“模板化”它以便您可以使用數據填充它。
如果您沒有真正操縱數據,那么您可能會對此感到更舒服 - 但只是將其表示為輸出。 而且,這類似於您當前使用的XML字符串 - 因此可能更為熟悉。
使用Cheetah,Jinja或其他模板庫來提供幫助。 使用該模板語言為XML文件創建模板。
例如,您只需從文件或數據庫表中讀取書籍列表。 您可以使用模板將此書對象列表傳遞給模板引擎,然后告訴它寫出您的XML輸出。
這些圖書對象的示例模板:
<?xml version="1.0"?>
<catalog>
{% for object in object_list %}
<book id="{{ object.bookID }}">
<author>{{ object.author_name }}</author>
<title>{{ object.title }}</title>
<genre>{{ object.genre }}</genre>
<price>{{ object.price }}</price>
<publish_date>{{ object.pub_date }}</publish_date>
<description>{{ object.description }}</description>
</book>
{% endfor %}
</catalog>
</xml>
模板引擎將遍歷“object_list”並輸出包含所有書籍的長XML文件。 這比存儲原始XML字符串要好得多,就像你現在一樣。
這使得XML顯示的更新和修改與數據,數據存儲和數據操作分開 - 使您的生活更輕松。
你要求最簡單,最快,所以請看這篇文章: http : //blog.simonwillison.net/post/58096201893/simpletemplates
如果你想要更聰明的東西,請看看這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.