gpt4 book ai didi

python - ElementTree 命名空间不方便

转载 作者:太空宇宙 更新时间:2023-11-03 19:32:30 24 4
gpt4 key购买 nike

我无法控制我获得的 XML 的质量。在某些情况下是:

<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
...
</COLLADA>

在其他方面我得到:

 <COLLADA>...</COLLADA>

我想我也应该处理

 <collada:COLLADA xmlns:collada="http://www.collada.org/2005/11/COLLADASchema">
...
</collada:COLLADA>

整个架构都是相同的,我只需要一个解析器来处理它。我该如何处理所有这些情况?我需要 XPath 和其他 lxml 好东西来解决这个问题。如何使其在 etree.parse 期间保持一致?我不想每次需要使用 XPath 时都检查 namespace 。

最佳答案

我通常的建议是首先对其进行预处理,以标准化命名空间。这样做有两个好处:规范化代码具有高度可重用性,因为它不依赖于随后如何处理数据;并且处理数据的逻辑大大简化。

如果文档只使用这一个命名空间,或者不使用,并且在文本或属性节点的内容中不使用限定名称,那么实现这种规范化的转换非常简单:

<xsl:template match="*">
<xsl:element name="local-name()" namespace="http://www.collada.org/2005/11/COLLADASchema">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>

关于python - ElementTree 命名空间不方便,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5093613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com