【发布时间】:2011-02-16 16:19:35
【问题描述】:
嗨
我在 Python 2.7 中使用 ElementTree (1.3) 并享受 XPath 功能,
然而,其中一个搜索结果让我感到惊讶。
我的 XML 示例:
<OTF>
<FECS state="disabled" version="2.2.0.0">
<BackEndCompatibility major="2.2" state="disabled">
<BackEnd state="disabled" version="2.2.0.0"/>
</BackEndCompatibility>
</FECS>
</OTF>
问题 1:
当我使用findall 获取第一个找到的元素时
version = "2.2.0.0"
found = list(txml.findall(".//BackEnd[@version='%s']" % version))
return found and found[0] or None
它什么也没找到。
但是,当我更改 XML 文件时,BackEnd 元素包含 子元素,
<BackEnd state="disabled" version="2.2.0.0">
<any_dummy_element/>
</BackEnd>
然后正确找到搜索的元素。
你遇到过这样的行为吗?
我做错了什么还是这是ElementTree 实现中的错误?
问题 2:
我遇到的另一个问题是xmlns。
假设我将 XML 第一行更改为包含 xmlns:
<OTF xmlns="http://si-wiki/OTFCompatibility">
</OTF>
在这种情况下,我必须将查找字符串更改为:
".//{http://si-wiki/OTFCompatibility}BackEnd[@version='%s']"
有没有办法告诉 ElementTree 在解析过程中忽略 xmlns 并将所有元素的名称(包括根)视为没有前缀?
问候,
兹比格纽
【问题讨论】:
标签: python xml elementtree