2013-01-09 64 views
2

非常簡單的問題。鑑於串Python的ElementTree.XML()和ElementTree.fromstring有什麼區別?

s = "<blah x='true'><img src='a.jpg' /><a><b></b></a></blah>" 

以下兩個蟒蛇命令產生相同的輸出:

>>> E.tostring(E.fromstring(s)) 
'<blah x="true"><img src="a.jpg" /><a><b /></a></blah>' 
>>> E.tostring(E.XML(s)) 
'<blah x="true"><img src="a.jpg" /><a><b /></a></blah>' 

那麼,爲什麼有兩個命令呢?我注意到在ElementTree的Python 2.7文檔中,fromstring()的引用包含短語「與XML()相同」。所以,如果它是相同的,爲什麼包括它?

我注意到的唯一區別是,最近的Python版本增加了可選的parser參數XML()而不是fromstring()。爲什麼?實際上,這些命令的工作方式實際上存在細微差別,或者存在兩個顯然相同的命令的原因?這只是爲了方便嗎?

回答

2

fromstringXML完全相同。事實上,它的定義是這樣的:

## 
# Parses an XML document from a string constant. Same as {@link #XML}. 
# 
# @def fromstring(text) 
# @param source A string containing XML data. 
# @return An Element instance. 
# @defreturn Element 

fromstring = XML 

您可以查看源here。我認爲這是對tostring功能的補充。

+0

呵呵。我認爲一個免費功能的想法是有道理的。任何想法爲什麼函數簽名不同,'fromstring'缺少可選的'parser' arg?它看起來應該支持它,如果它真的被定義爲'XML'的別名。 –

+0

@KenB它不會是一個補充功能,如果它採取額外的參數。因爲當你需要傳遞額外的參數時,你可以直接調用'XML'函數。 –

+0

@KenB由於'fromstring'被定義爲'XML'的直接別名,所以你可以傳遞額外的參數給它。它只是沒有在文檔中提到,可能不鼓勵以這種方式使用它。 –