我需要有关python脚本的帮助。我创建了一个脚本,可以在其中向XML文件添加新的银行假期。它工作正常(可能是因为我还在学习中,我可能没有以最好的方式做...),但是我必须对XML有了新的根目录,现在我被卡住了,因为不起作用。
这是初始XML:
<Holidays>
<ISR_01>
<DATE_ISR_01 D="03030303">Off</DATE_ISR_01>
<DATE_ISR_01 D="05050505">Off</DATE_ISR_01>
</ISR_01>
<ISR_02>
<DATE_ISR_02 D="04040404">Off</DATE_ISR_02>
<DATE_ISR_02 D="01010101">Off</DATE_ISR_02>
</ISR_02>
<ISR_03>
<DATE_ISR_03 D="01010101">Off</DATE_ISR_03>
</ISR_03>
</Holidays>
这是我的代码,正在运行:
import xml.etree.cElementTree as ET
from lxml import etree
doc = etree.parse('Bank_Holidays.xml')
root = doc.getroot()
ISR_TEAM = 'ISR_01'
DATE_ISR_TEAM = ('DATE_' + ISR_TEAM)
XPath_Date = ('count(//' + DATE_ISR_TEAM + ')')
count = doc.xpath(XPath_Date)
result = len(root.getchildren())
filtro = "*"
for child in root.iter(filtro):
pass
NEW_BANK_HOLIDAY = '32122020' ####### NEW BANK HOLIDAY TO BE ADDED
tree = ET.parse('Bank_Holidays.xml')
root = tree.getroot()
tree = ET.parse('Bank_Holidays.xml')
root = tree.getroot()
element = child.tag
attrib = {}
attrib = {'D': NEW_BANK_HOLIDAY}
subelement = root[0][int(count - 1)].makeelement(DATE_ISR_TEAM, attrib)
ET.SubElement(root[0], DATE_ISR_TEAM, attrib)
root[0][int(count)].text = 'Off'
tree.write('Bank_Holidays.xml')
但是现在,我需要将XML文件更改为这种格式,而且我不知道如何继续进行这项工作。想法是相同的:在此xml中添加新的银行假期行(<DATE_ISR_01 D="05050505">Off</DATE_ISR_01>
):
<UCCX>
<Holidays>
<ISR_01>
<DATE_ISR_01 D="03030303">Off</DATE_ISR_01>
<DATE_ISR_01 D="05050505">Off</DATE_ISR_01>
</ISR_01>
<ISR_02>
<DATE_ISR_02 D="04040404">Off</DATE_ISR_02>
<DATE_ISR_02 D="01010101">Off</DATE_ISR_02>
</ISR_02>
<ISR_03>
<DATE_ISR_03 D="01010101">Off</DATE_ISR_03>
</ISR_03>
</Holidays>
</UCCX>
如何使用新的XML达到相同的结果?
谢谢!
此方法不一定对您有用,仅供参考。
from simplified_scrapy import SimplifiedDoc,req,utils
html = '''
<Holidays>
<ISR_01>
<DATE_ISR_01 D="03030303">Off</DATE_ISR_01>
<DATE_ISR_01 D="05050505">Off</DATE_ISR_01>
</ISR_01>
<ISR_02>
<DATE_ISR_02 D="04040404">Off</DATE_ISR_02>
<DATE_ISR_02 D="01010101">Off</DATE_ISR_02>
</ISR_02>
<ISR_03>
<DATE_ISR_03 D="01010101">Off</DATE_ISR_03>
</ISR_03>
</Holidays>
'''
doc = SimplifiedDoc(html)
Holidays = doc.select('Holidays')
Holidays.insertBefore("<UCCX>\n")
Holidays.insertAfter("\n</UCCX>")
print (doc.html)