Así que estaba tratando de actualizar el código para que el número de orden de la matriz contenga cada número de orden individual (separados por un separador, pero eso no es realmente necesario. Era demasiado vago y copié y pegué mi propio código).

Luego apareció el error AttributeError: 'str' object has no attribute 'firstChild' cuando agregué el último bloque de código. ¿Cómo puedo solucionar esto?

import os
from xml.dom.minidom import parse

j=0
path = "C:/Users/User/Downloads"
quantity = []
# for every file in directory (path above)
for filename in os.listdir(path):
    if not filename.endswith('.xml'): continue
    fullname = os.path.join(path, filename) # add path and file together
    data = parse(fullname) # parses XML
    ordernum = data.getElementsByTagName('OrderNumber') # gets OrderNumber from XML
    print(ordernum[0].firstChild.nodeValue) # prints OrderNumber from XML
    quan = data.getElementsByTagName('OrderedQuantity') # same as above with OrderedQuantity
    k=0
    l=0
    for k, q in enumerate(quan):
        if q.firstChild.nodeValue != None:
            quantity.append(quan[k].firstChild.nodeValue)
    quantity.append("||separator||")
    for l, p in enumerate(ordernum):
        if p.firstChild.nodeValue != None:
            ordernum.append(ordernum[l].firstChild.nodeValue)
    ordernum.append("||separator||")

Ejemplo XML:

<OrderNumber>8762196_W0169</OrderNumber>
<OrderedQuantity>2.000</OrderedQuantity>
<OrderedQuantity>4.000</OrderedQuantity>
<OrderedQuantity>6.000</OrderedQuantity>
<OrderedQuantity>3.000</OrderedQuantity>
<OrderedQuantity>1.000</OrderedQuantity>
<OrderedQuantity>8.000</OrderedQuantity>
<OrderedQuantity>6.000</OrderedQuantity>
<OrderedQuantity>7.000</OrderedQuantity>
-1
Sir Muffington 6 oct. 2019 a las 21:10

1 respuesta

La mejor respuesta

Así que en el segundo ciclo, estás tratando de enumerar

for l, p in enumerate(ordernum):

Y también dentro del bucle, está agregando un elemento al mismo objeto, es decir, ordernum

Por lo tanto, la longitud del objeto también aumenta a medida que se llena dentro del propio ciclo.

Intente usar otro objeto / lista para almacenar.

2
Mandar A 6 oct. 2019 a las 18:18