我想生成下面的xml。有线索吗?你知道吗
CSV data
id,value,
1,10
2,20
<root>
<xs:sample name="id">
<xs:final>
<xs:id>1</xs:id>
</xs:final>
<xs:new base="xs:string">
<xs:maxLength value="10"/>
</xs:new>
</xs:sample>
<xs:sample name="id">
<xs:final>
<xs:id>2</xs:id>
</xs:final>
<xs:new base="xs:string">
<xs:maxLength value="20"/>
</xs:new>
</xs:sample>
</root>
我用过lxml.etree文件,但输出xml结构有所不同。你知道吗
我不想硬编码的值,因为我想在csv循环
示例代码,我使用过:
import csv
import lxml.etree as ET
headers = ['id','value']
root = ET.Element("root")
xssample = ET.SubElement(root, "xssample")
xsfinal = ET.SubElement(xssample, "xsfinal")
xsnew = ET.SubElement(xssample, "xsnew")
xsid = ET.SubElement(xsfinal, "xsid")
xsmaxlength = ET.SubElement(xsnew, "xsmaxlength")
filename = 'sample.csv'
with open(filename) as f:
next(f) # SKIP HEADER
csvreader = csv.reader(f)
for row in csvreader:
for x in range(len(headers)):
data = ET.SubElement(root, "xssample", {'name':headers[x]})
for col in range(len(headers)):
node = ET.SubElement(data, headers[col]).text = str(row[col])
# SAVE XML TO FILE
tree_out = (ET.tostring(root, pretty_print=True, xml_declaration=True, encoding="UTF-8"))
# OUTPUTTING XML CONTENT TO FILE
with open('Output.xml', 'wb') as f:
f.write(tree_out)
产出结构不同:
<?xml version='1.0' encoding='UTF-8'?>
<root>
<xssample>
<xsfinal>
<xsid/>
</xsfinal>
<xsnew>
<xsmaxlength/>
</xsnew>
</xssample>
<xssample name="id">
<id>1</id>
<value>10</value>
</xssample>
<xssample name="value">
<id>1</id>
<value>10</value>
</xssample>
<xssample name="id">
<id>2</id>
<value>20</value>
</xssample>
<xssample name="value">
<id>2</id>
<value>20</value>
</xssample>
</root>
我无法正确更改标签。有人能指出这个问题吗。你知道吗
您可以手动生成XML:
输出:
相关问题 更多 >
编程相关推荐