簡體   English   中英

混淆使用類或函數:使用lxml和Python編寫XML文件

[英]Confused as to use a class or a function: Writing XML files using lxml and Python

我需要使用lxml和Python編寫XML文件。

但是,我無法弄清楚是否使用class來執行此操作或函數。 關鍵是,這是我第一次開發一個合適的軟件,並決定在哪里以及為什么使用一個class似乎仍然是神秘的。

我會說明我的觀點。

例如,考慮我編寫的以下基於函數的代碼,用於將子元素添加到etree根目錄。

from lxml import etree

root = etree.Element('document')

def createSubElement(text, tagText = ""):
    etree.SubElement(root, text)
    # How do I do this: element.text = tagText

createSubElement('firstChild')
createSubElement('SecondChild')

正如預期的那樣,這個輸出是:

<document>
  <firstChild/>
  <SecondChild/>
</document>

但是,您可以注意到注釋,我不知道如何使用此方法設置文本變量。

使用class是解決這個問題的唯一方法嗎? 如果是的話,你能給我一些關於如何實現這一目標的指示嗎?

以下代碼有效:

def createSubElement(text, tagText = ""):
    elem = etree.SubElement(root, text)
    elem.text = tagText

createSubElement('firstChild', 'first one')
createSubElement('SecondChild', 'second one')

print etree.tostring(root)

使用類而不是函數主要與在類的實例中保持狀態有關(在極少數用例中,如果不需要保持狀態 ,則類會有意義),這與您的問題無關 - 如代碼顯示,您的問題只是您沒有將任何名稱綁定到從SubElement調用返回的元素,因此當然您無法在函數的其余部分中進一步操作該元素(例如,通過設置其text屬性)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM