ElementTree命名空间

2024-10-01 17:30:39 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

在其他方面我得到:

^{pr2}$

我想我也应该处理好

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

所有的模式都是相同的,我只需要一个解析器来处理它。这些案子我怎么办?我需要XPath和其他lxml工具来解决这个问题。如何在etree.parse时间?我不想每次需要使用XPath时都检查名称空间。在


Tags: orghttp解析器versionwww模式质量情况
1条回答
网友
1楼 · 发布于 2024-10-01 17:30:39

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

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

<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>

相关问题 更多 >

    热门问题