【发布时间】:2010-10-23 19:13:27
【问题描述】:
编辑
在这个问题中使用“bad at XML”这个短语一直是争论的焦点,所以我想首先提供一个非常明确的定义来说明我在这种情况下这个术语的含义:如果支持对于标准 XML API 来说很差,并且迫使人们使用特定于语言的 API,其中命名空间似乎是事后才想到的,那么我倾向于将该语言描述为不像其他主流语言那样适合使用 XML没有这些问题。 “Bad at XML”只是这些条件的简写,我认为这是描述它的一种公平方式。正如我将要描述的,我对 Python 的初步体验引起了人们对它是否满足这些条件的担忧。但是,因为总的来说我对 Python 的体验非常积极,所以我似乎遗漏了一些东西,从而激发了这个问题。
我正在尝试使用 Python 进行一些非常简单的 XML 处理。我最初希望能够重用我对标准 W3C DOM API 的了解,并高兴地发现 xml.dom 和 xml.dom.minidom 模块在支持这些 API 方面做得很好。然而不幸的是,序列化被证明是有问题的,原因如下:
- xml.dom 不附带序列化程序
- 不再维护包含 xml.dom 序列化程序的 PyXML 库,并且
- minidom does not support serialization of namespaces,尽管 API 支持命名空间
我在这里查看了其他类似 W3C 的库的列表:
http://wiki.python.org/moin/PythonXml#W3CDOM-likelibraries
我发现很多其他的库,比如 4Suite 和 libxml2dom 也没有维护。
另一方面,itools 乍一看似乎得到了维护,但似乎没有可用的 Ubuntu/Debian 软件包,因此很难部署和维护。
此时,尝试在我的 Python 应用程序中使用 W3C DOM API 似乎是死路一条,我开始研究 ElementTree API。但我认为 eTree API 支持命名空间的方式非常丑陋,每次创建特定命名空间中的元素时都需要使用字符串连接:
http://lxml.de/tutorial.html#namespaces
所以,我的问题是,我是否忽略了某些东西,或者在 Python 中对 XML(尤其是 W3C DOM)的支持实际上很糟糕?
编辑
下面列出了更精确的问题,这些问题的答案对我很有帮助:
- Python 中是否有对 W3C DOM 的合理支持?
- 如果不是
xml.dom,你是否使用例如etree而不是 W3C DOM? - 如果是这样,哪个库最好,您如何克服 API 中的命名空间问题?
- 如果您改用 W3C DOM,您是否知道实现序列化并支持命名空间的库?
【问题讨论】:
-
不错的价值判断。这就是一个很好的问题。形成意见并要求人们证明你的意见是错误的。除了投反对票,你希望从这样的“加载”价值判断中得到什么?放弃意见。放弃价值判断。放下消极情绪。将其改写为(1)定义您的问题并(2)寻求解决方案。否则,您将一无所获。
-
@echo-flow:“这不是价值判断”。然而。它是一种价值判断。放弃意见。放弃价值判断。放下消极情绪。将其改写为(1)定义您的问题并(2)寻求解决方案。请。 “Python 中是否有对 W3C DOM 的合理支持?”如果这是您的问题,请从标题中删除价值判断并将其作为您的标题。
-
@echo-flow:我会将这个问题改写为“Python 中如何支持 XML?”在问题中使用“坏”这个词并不是一个很好的开始方式,因为这意味着你认为它很糟糕。不要那样做。
-
"标题并不意味着价值判断。"当它是明显而明显的价值判断时,你怎么能这么说。 “Bad at XML”是价值判断的最好例子。没有比价值判断更简洁或清晰的例子了。这就是它的全部内容。它是一种价值判断。和。这不是你的问题。请使其与您的问题保持一致。
-
这里是我对“bad at XML”这个短语的完整解释:如果对标准 API 的支持很差,并且强制使用特定于语言的 API,其中命名空间似乎是事后考虑,我倾向于将该语言描述为不像其他没有这些问题的主流语言那样适合使用 XML。短语“不擅长 XML”只是对此的简写,我相信我在问题中已经充分证明了它的合理性,可以将其作为一个合理的问题提出。这个问题的目的是为了更好地理解这些问题。