我们有一个大的XML订单,我们必须对其进行解析。一些订单属性以<custom-attribute attribute-id="attibute-id">some value</custom-attribute>
的形式出现。我们正在通过SSIS解析此XML,并且在检索这些属性的值时遇到了问题。我们注意到,如果我们添加一个值,它就可以<custom-attribute attribute-id="attibute-id"><value>some value</value></custom-attribute>
因此,在使用SSIS解析XML之前,有什么方法可以使用python在所有<value>
元素上添加<custom-attribute>
标记,如下所示:
当前XML:
<custom-attributes>
<custom-attribute attribute-id="color">BLACK</custom-attribute>
<custom-attribute attribute-id="colorDesc">BLACK</custom-attribute>
</custom-attributes>
转换后的XML:
<custom-attributes>
<custom-attribute attribute-id="color">
<value>BLACK</value>
</custom-attribute>
<custom-attribute attribute-id="colorDesc">
<value>BLACK</value>
</custom-attribute>
</custom-attributes>
谢谢
答案 0 :(得分:1)
您可以解析XML并将SubElement添加到XML。假设您在名为“ SomeData.xml”的文件中有XML数据:
<custom-attributes>
<custom-attribute attribute-id="color">BLACK</custom-attribute>
<custom-attribute attribute-id="colorDesc">BLACK</custom-attribute>
</custom-attributes>
您可以使用下一个Python脚本转换此文件:
import xml.etree.cElementTree as ET
XML = ET.parse('SomeData.xml').getroot()
for Atr in XML.findall('custom-attribute'): # Foreach 'custom-attribute' in root
Val = ET.SubElement(Atr, "value") # Create new XML SubElement named 'value'
Val.text = Atr.text # Write text from parent to child element
Atr.text = "" # Clear parent text
ET.ElementTree(XML).write("Output.xml")
哪个生成所需的XML并将其保存为“ Output.xml”:
<custom-attributes>
<custom-attribute attribute-id="color"><value>BLACK</value></custom-attribute>
<custom-attribute attribute-id="colorDesc"><value>BLACK</value></custom-attribute>
</custom-attributes>
希望有帮助!