我有一个像这样的xml文件

<xml>
  <canvas id="123">
      <child name="somechild" id="1"/>
  </canvas>
  <canvas id="124">
      <child name="somechild" id="2"/>
  </canvas>
  <canvas id="125">
      <child name="somechild" id="3"/>
  </canvas>
</xml>


我想复制画布的属性ID的值
基本上是<canvas id="COPY THIS VALUE">里面的内容
并将它们写在一个新的文本文件中,它将像这样列出所有文件:

123, 1234, 214334, 34234, 34234


感谢您的帮助!

编辑 - - - - -

到目前为止,我已经尝试过从另一个答案中看到的内容,但是它复制了画布ID的整个行,而不是ID内的内容

with open('file.xml') as myfile, open('fileids.xml', 'w') as outfile:
content = myfile.read()
text = re.search(r'canvas id=".*?">', content, re.DOTALL).group()
outfile.write(text)

最佳答案

您可以使用内置的xml.etree.ElementTree模块:

import xml.etree.ElementTree as ET
xml = ET.fromstring('''<xml>
  <canvas id="123">
      <child name="somechild" id="1"/>
  </canvas>
  <canvas id="124">
      <child name="somechild" id="2"/>
  </canvas>
  <canvas id="125">
      <child name="somechild" id="3"/>
  </canvas>
</xml>''')
print([node.attrib['id'] for node in xml.findall('.//canvas')])


输出:

['123', '124', '125']


使用列表,您可以轻松地将项目写入文件。

08-25 17:26
查看更多