[英]need help on searching multiple elements using lxml XPATH
我有以下 XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Bdpo>
<ListaRegistrosBdpo>
<RegistroBdpo>
<Empresa>03271</Empresa>
<DataRegistro>2018-03-27</DataRegistro>
<DataOcorrencia>2017-11-08</DataOcorrencia>
<DataReconhecimento>2017-11-17</DataReconhecimento>
<NumeroEvento>00008</NumeroEvento>
<TipoEvento>6</TipoEvento>
<PerdaRaizDataRegistro>2018-02-08</PerdaRaizDataRegistro>
<PerdaRaizNumeroEvento>00250</PerdaRaizNumeroEvento>
<Categoria>7</Categoria>
<OrigemJudicial>1</OrigemJudicial>
<ContabilizadaPsl>2</ContabilizadaPsl>
<FuncaoNegocio>1</FuncaoNegocio>
<CausaPerda>2</CausaPerda>
<StatusPerda>2</StatusPerda>
<ValorBruto>0.00</ValorBruto>
<DescricaoEvento>123</DescricaoEvento>
<IdInternaEvento>Pasta 95</IdInternaEvento>
</RegistroBdpo>
<RegistroBdpo>
<Empresa>03271</Empresa>
<DataRegistro>2018-03-27</DataRegistro>
<DataOcorrencia>2017-11-08</DataOcorrencia>
<DataReconhecimento>2017-11-17</DataReconhecimento>
<NumeroEvento>00007</NumeroEvento>
<TipoEvento>6</TipoEvento>
<PerdaRaizDataRegistro>2018-02-08</PerdaRaizDataRegistro>
<PerdaRaizNumeroEvento>00248</PerdaRaizNumeroEvento>
<Categoria>7</Categoria>
<OrigemJudicial>1</OrigemJudicial>
<ContabilizadaPsl>2</ContabilizadaPsl>
<FuncaoNegocio>1</FuncaoNegocio>
<CausaPerda>2</CausaPerda>
<StatusPerda>2</StatusPerda>
<ValorBruto>0.00</ValorBruto>
<DescricaoEvento>123</DescricaoEvento>
<IdInternaEvento>Pasta 41</IdInternaEvento>
</RegistroBdpo>
(...)
</ListaRegistrosBdpo>
</Bdpo>
我想搜索符合以下条件的 RegistroBdpo 元素:
我尝试了以下代码:
import lxml.etree as ET
r = ET.parse(xml_file_location)
string = './/*RegistroBdpo[TipoEvento="5" or TipoEvento="6"][PerdaRaizNumeroEvento="00250"]'
[ reg.find('IdInternaEvento').text for reg in r.iterfind(string) ]
但我得到错误: SyntaxError: invalid predicate
关于我做错了什么有什么想法吗? 谢谢。
就 XPath 而言,您只需要//RegistroBdpo[TipoEvento=5 or TipoEvento=6][PerdaRaizNumeroEvento="00534"]/IdInternaEvento
。 或者更确切地说//RegistroBdpo[TipoEvento=5 or TipoEvento=6][PerdaRaizNumeroEvento="00250"]/IdInternaEvento
,具体取决于文本中给出的值与您的代码示例。
在带有 lxml 的 Python 中,您可以使用例如ids = r.xpath('//RegistroBdpo[TipoEvento=5 or TipoEvento=6][PerdaRaizNumeroEvento="00250"]/IdInternaEvento')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.