使用Python元素树库将文本追加到XML文件

使用Python元素树库将文本追加到XML文件,python,xml,elementtree,Python,Xml,Elementtree,我需要创建一个XML文件,该文件将N作为用户的输入,如下所示(这里,N=3): 那么,代码中需要更正什么?我也可以使用一些不同库用法的全新代码。您的代码有几个问题。首先,如果使用root.text,则将被字符串转义版本(>和<)替换。其次,你不必维护那么多计数器。Python直接为你做!如果我们解决了这两个问题(我添加了注释来解释发生了什么),并稍微理清了逻辑,那么我们会得到以下结果: from xml.etree.ElementTree import Element from xm

我需要创建一个XML文件,该文件将N作为用户的输入,如下所示(这里,N=3):


那么,代码中需要更正什么?我也可以使用一些不同库用法的全新代码。

您的代码有几个问题。首先,如果使用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>