Extraer datos de un string XML con Python
Publicado por Mariano (4 intervenciones) el 25/02/2021 14:20:27
Tengo un string XML y necesito extraer solamente la primer etiqueta "col" en cada grupo de "row". Es decir la salida debería ser la siguiente:
Este es el XML:
El siguiente es mi codigo, pero extrae todas las etiquetas "col" en lugar de solo la primera de cada grupo como yo quisiera:
Esta es la salida de mi codigo:
Por favor si me pueden hechar una mano. muchas gracias
1
2
3
Fluk-TESTBeltran-TESTACME-TESTEste es el XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
data = '''<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <processOXIMessageResponse xmlns="urn:com:singun:webservice" xmlns:ns="urn:com:singun:webservice"> <ns1:processOXIMessageReturn xmlns:ns1="urn:com:singun:webservice"> <SingunDocument xmlns="C" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" protocol="OXI"> <sessionId xmlns="">1613762599483</sessionId> <command xmlns="" echo="" xsi:type="ServiceProviderGetListResponse"> <serviceProviderTable> <colHeading>Service Provider Id</colHeading> <colHeading>Service Provider Name</colHeading> <colHeading>Is Enterprise</colHeading> <colHeading>Reseller Id</colHeading> <row> <col>Fluk-TEST</col> <col>ATP 1</col> <col>true</col> <col /> </row> <row> <col>Beltran-TEST</col> <col>ATP 2</col> <col>true</col> <col /> </row> <row> <col>ACME-TEST</col> <col>ATP 3</col> <col>true</col> <col /> </row> </serviceProviderTable> </command> </SingunDocument> </ns1:processOXIMessageReturn> </processOXIMessageResponse> </soapenv:Body></soapenv:Envelope>El siguiente es mi codigo, pero extrae todas las etiquetas "col" en lugar de solo la primera de cada grupo como yo quisiera:
1
2
3
4
5
6
import xml.etree.ElementTree as ET
root = ET.fromstring(data)
for row in root.iter('row'):
for col in row:print(col.text)
Esta es la salida de mi codigo:
1
2
3
4
5
6
7
8
9
10
11
12
Fluk-TESTATP 1
true
None
Beltran-TESTATP 2
true
None
ACME-TESTATP 3
true
None
Por favor si me pueden hechar una mano. muchas gracias
Valora esta pregunta


0

