2013-10-19 66 views
0

好WordPress的進口商自定義XML文件,所以這裏是我目前的狀況:寫作使用LXML

我的XML或LXML的知識不是很好嗎,因爲我很少使用的XML文件到現在。 所以請告訴我,如果我的方法中的某些東西真的很愚蠢。 ;-)

我想使用Wordpress導入器爲Wordpress安裝一個自定義XML文件。 默認格式可以在這裏看到:XML File

現在也有一些標籤看起來像這樣

<wp:author> 

我不是百分之百的把握,但據我今天瞭解到,WP:一部分標籤是命名空間。

當我試圖用LXML創建這些標籤我這樣做

author = etree.Element("wp:author") 

這造成了一個錯誤,因爲我不能寫WP:作者,但唯一作者。 我用谷歌,看着於LXML網站,以及與此想出了:

WP = ElementMaker(namespace="http://wordpress.org/export/1.2/", 
        "nsmap={'wp' : "http://wordpress.org/export/1.2/"}) 
author = WP("author") 

輸出:

<wp:author xmlns:wp="http://wordpress.org/export/1.2/"/> 

嗯,好。正如我今天所瞭解的,xmlns:wp屬於命名空間的東西。但是我不想讓xmlns:wp的東西出現,因爲它不在它們的XML文件中。我擡起頭,WordPress的本身如何出口他們的內容,他們這樣做就像this

echo '<wp:author_id>' . $author->ID . '</wp:author_id>'; 

現在我的問題,是它更好地做同樣喜歡他們,或者我應該堅持LXML,只要有一種沒有xmlns:wp的東西的標籤?使用lxml創建XML文件似乎是更好的方法,因爲它似乎(通常)非常容易,並且更好閱讀。

我已經嘗試過objectify.deannotate,cleanup_namespace和類似的建議,但所有這些都不起作用。我希望你們中的一些人有一個答案,要麼使用lxml來解決我的問題,要麼說,更好地按照Wordpress人的方式來做!

如果我忽略了已經回答過的類似問題,我真的很抱歉,請告訴我。

謝謝 Vaelor

回答

2

這裏是我的建議:退一步從LXML回,並考慮蟒蛇內置的XML處理支持:一個名爲xml.etree.ElementTree模塊。 它導入REPL這樣的:

import xml.etree.ElementTree as ET

,並用它玩一會兒。這裏是模塊上有了較好的Python文檔:http://goo.gl/8FVto

構建一個元素就是這麼簡單:

a = ET.Element('wp:author') 
ET.dump(a) 

然後添加一些子元素。這些都在文檔中。

+0

太好了,謝謝你這個作品很棒。 :-)我開始使用谷歌什麼用於xml生成和lxml上來,所以我不知何故只是跳過內置的XML模塊。 :( – Vaelor