我正在解析每天从供应商处收到的XML文档,它大量使用名称空间.我已将问题最小化为一个最小子集:
我需要解析一些元素,它们都是具有特定属性的元素的子元素.
我可以使用lxml.etree.Element.findall(TAG,root.nsmap)来查找我需要检查其属性的候选节点.
然后,我尝试通过我知道它使用的名称来检查每个元素的属性:具体来说,这里是ss:Name.如果该属性的值是所需值,那么我将更深入地研究所述元素(继续执行其他操作).
我怎样才能做到这一点?
我正在解析的XML大致
some gorp declaring a bunch of namespaces one of which is
xmlns:ss="THE_VERY_SAME_REALLY_LONG_STRING_AS_ROOT"
>
....
...
....
....
....
...
我找到了第一个想要SomethingIWant的元素(最终我想要它们,所以我确实找到了所有元素)
import lxml
from lxml import etree
tree = etree.parse(myfilename)
root = tree.getroot()
# i want just the first one for now
my_sheet = root.findall('ss:RecordSet', root.nsmap)[0]
现在,我想从该元素中获取ss:Name属性,以对其进行检查,但不确定如何?
我知道my_sheet.attrib将向我显示原始URI,后跟属性名称,但我不希望这样.我需要检查它是否具有用于特定命名空间属性的特定值. (由于错误,我可以完全跳过此元素).
我尝试使用lxml.etree.ElementTree.attrib.get(),但似乎没有获得任何有用的信息.
有任何想法吗?