1

当 XML 采用以下形式时,我在解析 XML 时遇到问题:

<Cars>
    <Car>
        <Color>Blue</Color>
        <Make>Ford</Make>
        <Model>Mustant</Model>
    </Car>
    <Car>
        <Color>Red</Color>
        <Make>Chevy</Make>
        <Model>Camaro</Model>
    </Car>
</Cars>

我已经想出了如何解析这样的第一级孩子:

<Car>
    <Color>Blue</Color>
    <Make>Chevy</Make>
    <Model>Camaro</Model>
</Car>

使用这种代码:

from lxml import etree
    a = os.path.join(localPath,file)
    element = etree.parse(a)
    cars = element.xpath('//Root/Foo/Bar/Car/node()[text()]')
    parsedCars = [{field.tag: field.text for field in cars} for action in cars]
    print parsedCars[0]['Make'] #Chevy

如何解析作为“汽车”子标签的多个“汽车”标签?

4

1 回答 1

3

试试这个

from lxml import etree
    a = os.path.join(localPath,file)
    element = etree.parse(a)
    cars = element.xpath('//Root/Foo/Bar/Car')
    for car in cars:
        colors = car.xpath('./Color')
        makes = car.xpath('./Make')
        models = car.xpath('./Model')
于 2012-03-08T13:32:40.837 回答