2013-01-09 69 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'的直接别名,所以你可以传递额外的参数给它。它只是没有在文档中提到,可能不鼓励以这种方式使用它。 –