相关疑难解决方法(0)

Python ElementTree模块:当使用"find","findall"方法时,如何忽略XML文件的命名空间以找到匹配的元素

我想使用"findall"方法在ElementTree模块中找到源xml文件的一些元素.

但是,源xml文件(test.xml)具有命名空间.我将部分xml文件截断为样本:

<?xml version="1.0" encoding="iso-8859-1"?>
<XML_HEADER xmlns="http://www.test.com">
    <TYPE>Updates</TYPE>
    <DATE>9/26/2012 10:30:34 AM</DATE>
    <COPYRIGHT_NOTICE>All Rights Reserved.</COPYRIGHT_NOTICE>
    <LICENSE>newlicense.htm</LICENSE>
    <DEAL_LEVEL>
        <PAID_OFF>N</PAID_OFF>
        </DEAL_LEVEL>
</XML_HEADER>
Run Code Online (Sandbox Code Playgroud)

示例python代码如下:

from xml.etree import ElementTree as ET
tree = ET.parse(r"test.xml")
el1 = tree.findall("DEAL_LEVEL/PAID_OFF") # Return None
el2 = tree.findall("{http://www.test.com}DEAL_LEVEL/{http://www.test.com}PAID_OFF") # Return <Element '{http://www.test.com}DEAL_LEVEL/PAID_OFF' at 0xb78b90>
Run Code Online (Sandbox Code Playgroud)

虽然它可以工作,因为有一个名称空间"{http://www.test.com}",在每个标记前面添加一个名称空间是非常不方便的.

使用"find","findall"等方法时,如何忽略命名空间?

python namespaces find elementtree findall

118
推荐指数
8
解决办法
6万
查看次数

标签 统计

elementtree ×1

find ×1

findall ×1

namespaces ×1

python ×1