相关疑难解决方法(0)

Python:ElementTree,获取Element的命名空间字符串

此XML文件命名为example.xml:

<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">

  <modelVersion>14.0.0</modelVersion>
  <groupId>.com.foobar.flubber</groupId>
  <artifactId>uberportalconf</artifactId>
  <version>13-SNAPSHOT</version>
  <packaging>pom</packaging>
  <name>Environment for UberPortalConf</name>
  <description>This is the description</description>    
  <properties>
      <birduberportal.version>11</birduberportal.version>
      <promotiondevice.version>9</promotiondevice.version>
      <foobarportal.version>6</foobarportal.version>
      <eventuberdevice.version>2</eventuberdevice.version>
  </properties>
  <!-- A lot more here, but as it is irrelevant for the problem I have removed it -->
</project>
Run Code Online (Sandbox Code Playgroud)

如果我加载example.xml并使用ElementTree解析它,我可以看到它的命名空间http://maven.apache.org/POM/4.0.0.

>>> from xml.etree import ElementTree
>>> tree = ElementTree.parse('example.xml')
>>> print tree.getroot()
<Element '{http://maven.apache.org/POM/4.0.0}project' at 0x26ee0f0>
Run Code Online (Sandbox Code Playgroud)

我还没有找到一种方法来调用从而Element无需解析str(an_element)元素来获取命名空间.似乎必须有更好的方法.

python elementtree

20
推荐指数
4
解决办法
3万
查看次数

在 lxml 中定义默认命名空间(无前缀)

使用 lxml 渲染 XHTML 时,一切都很好,除非您碰巧使用 Firefox,它似乎无法处理以命名空间为前缀的 XHTML 元素和 javascript。虽然Opera是能够执行JavaScript(这适用于jQuery和MathJax)的罚款,无论XHTML命名空间是否具有前缀(h:在我的情况)或没有,Firefox中的脚本将用奇怪的错误(中止this.head是未定义的MathJax 的情况)。

我知道这个register_namespace函数,但它既不接受None也不""作为命名空间前缀。我_namespace_maplxml.etree模块中听说过,但是我的 Python 抱怨这个属性不存在(版本问题?)

有没有其他方法可以删除 XHTML 名称空间的名称空间前缀?请注意str.replace,正如在另一个相关问题的回答中所建议的那样,不是我可以接受的方法,因为它不知道 XML 语义并且可能很容易搞砸结果文档。

根据请求,您会发现两个可以使用的示例。一种带有命名空间前缀一种没有. 第一个将在 Firefox 中显示 0(错误),第二个将显示 1(正确)。Opera 将正确呈现两者。这显然是一个 Firefox 错误,但这只是作为想要使用 lxml 的无前缀 XHTML 的一个基本原理——还有其他很好的理由来减少移动客户端的流量等(h:如果你考虑数十或数百个 html 标签,甚至很多) .

python xslt xhtml lxml namespaces

2
推荐指数
1
解决办法
2540
查看次数

标签 统计

python ×2

elementtree ×1

lxml ×1

namespaces ×1

xhtml ×1

xslt ×1