使用Python元素树库将文本追加到XML文件
我需要创建一个XML文件,该文件将N作为用户的输入,如下所示(这里,N=3):使用Python元素树库将文本追加到XML文件,python,xml,elementtree,Python,Xml,Elementtree,我需要创建一个XML文件,该文件将N作为用户的输入,如下所示(这里,N=3): 那么,代码中需要更正什么?我也可以使用一些不同库用法的全新代码。您的代码有几个问题。首先,如果使用root.text,则将被字符串转义版本(>和<)替换。其次,你不必维护那么多计数器。Python直接为你做!如果我们解决了这两个问题(我添加了注释来解释发生了什么),并稍微理清了逻辑,那么我们会得到以下结果: from xml.etree.ElementTree import Element from xm
那么,代码中需要更正什么?我也可以使用一些不同库用法的全新代码。您的代码有几个问题。首先,如果使用root.text,则<和>将被字符串转义版本(>和<)替换。其次,你不必维护那么多计数器。Python直接为你做!如果我们解决了这两个问题(我添加了注释来解释发生了什么),并稍微理清了逻辑,那么我们会得到以下结果:
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import SubElement
import xml.etree.ElementTree as etree
# Number of users to create: Edit this part
users = 3
op = ""
for i in xrange(1, users + 1):
# Create test element
root = Element('test')
root.set('name', 'test' + str(i))
# Create parameter element
params = SubElement(root, 'parameter')
params.set('name' , 'username')
params.set('value', 'bhusriva' + str(i))
# Create classes element
classes = SubElement(root, 'classes')
# Add class subelement
class_element = SubElement(classes, 'class')
class_element.set('name', 'bhuv.mllab.tests.DensityTest')
# Add output to string
op = op + etree.tostring(root)
# Write output to file
with open('create_users_multi_browser.xml', 'w') as f:
f.write(op)
运行此命令将获得以下输出:
<test name="test1">
<parameter name="username" value="bhusriva1" />
<classes>
<class name="bhuv.mllab.tests.DensityTest" />
</classes>
</test>
<test name="test2">
<parameter name="username" value="bhusriva2" />
<classes>
<class name="bhuv.mllab.tests.DensityTest" />
</classes>
</test>
<test name="test3">
<parameter name="username" value="bhusriva3" />
<classes>
<class name="bhuv.mllab.tests.DensityTest" />
</classes>
</test>
希望这有帮助
<parameter name="username" value="bhusriva1" /> <class name="bhuv.mllab.tests.DensityTest" />
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import SubElement
import xml.etree.ElementTree as etree
# Number of users to create: Edit this part
users = 3
op = ""
for i in xrange(1, users + 1):
# Create test element
root = Element('test')
root.set('name', 'test' + str(i))
# Create parameter element
params = SubElement(root, 'parameter')
params.set('name' , 'username')
params.set('value', 'bhusriva' + str(i))
# Create classes element
classes = SubElement(root, 'classes')
# Add class subelement
class_element = SubElement(classes, 'class')
class_element.set('name', 'bhuv.mllab.tests.DensityTest')
# Add output to string
op = op + etree.tostring(root)
# Write output to file
with open('create_users_multi_browser.xml', 'w') as f:
f.write(op)
<test name="test1">
<parameter name="username" value="bhusriva1" />
<classes>
<class name="bhuv.mllab.tests.DensityTest" />
</classes>
</test>
<test name="test2">
<parameter name="username" value="bhusriva2" />
<classes>
<class name="bhuv.mllab.tests.DensityTest" />
</classes>
</test>
<test name="test3">
<parameter name="username" value="bhusriva3" />
<classes>
<class name="bhuv.mllab.tests.DensityTest" />
</classes>
</test>