【发布时间】:2021-05-07 19:40:44
【问题描述】:
我有以下 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 元素:
- TipoEvento 标签等于 5 OR 6
- PerdaRaizNumeroEvento 标签等于 00250 并返回他们的 ID 标签 (IdInternaEvento)。
我已经尝试了以下代码:
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
关于我做错了什么有什么想法吗?谢谢。
【问题讨论】: