【发布时间】:2021-04-30 13:00:14
【问题描述】:
我有基础 XML,我想向其中添加新元素。但它失败了,我不明白为什么。
我的基础 XML:
<?xml version="1.0" encoding="utf-8"?>
<vehicleDefinitions>
<vehicleType id="bus">
<capacity>
<seats persons="3"/>
<standingRoom persons="9"/>
</capacity>
<length meter="12.3"/>
<width meter="2.5"/>
<accessTime secondsPerPerson="0.5"/>
<egressTime secondsPerPerson="0.5"/>
<doorOperation mode="serial"/>
<passengerCarEquivalents pce="0.28"/>
</vehicleType>
</vehicleDefinitions>
我的代码:
from lxml import etree
schedule = etree.parse('schedule_mapped.xml') #I use this file to get data from it
vehicles = etree.parse('vehicles.xml') #I'm reading my base XML
vehicles_root = vehicles.getroot() #Getting its root
for transitLine in schedule.findall('transitLine'):
tstype = transitLine.find('transitRoute').find('transportMode').text
for transitRoute in transitLine.findall('transitRoute'):
for departure in transitRoute.find('departures').findall('departure'):
tsname = departure.get('vehicleRefId')
vehicle = etree.SubElement(vehicles_root, 'vehicle') #I want to add a child to my root element
vehicle.attrib['id'] = tsname
vehicle.attrib['type'] = tstype
我的输出 XML 的结构是正确的。我的意思是添加了孩子:
但是在将 XML 写入文件之后
with open(ts.replace('schedule', 'vehicles'), 'wb') as f:
f.write(etree.tostring(vehicles,pretty_print=True,encoding='utf8'))
我发现问题可能出在基础 XML 中的 unreadable characters 中,但我不知道如何解决。
【问题讨论】:
-
您是否尝试过
etree.write(output_filename)并确保为您想要的每个标签插入\n字符。