使用 python 打印 xml 中的内容

printing contents in xml using python

我正在尝试使用下面的脚本将 xml 转换为 xslt。转换完美无缺。现在,我想将内容写入一个新的 xml 文件。当我尝试这样做时,我的 xml 文件中只有一行。但是,当我在控制台中打印它时,我得到多行输出。任何人都可以发现我做错了什么吗?

import lxml.etree as ET


dom = ET.parse("1.xml")
xslt = ET.parse("1.xsl")
transform = ET.XSLT(xslt)
newdom = transform(dom)
print(newdom)
newdom.write("output.xml")

您似乎已经将所有内容写入 "output.xml" 文件。随意 post 输出文件的片段,以及输入文件的片段。

如果唯一的问题是您希望它跨多行构建,而不是 one-liner,您可以将漂亮的打印标志设置为 true。

newdom.write("output.xml", pretty_print=True)

输出示例:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>Artist</th>
      </tr>
      <tr>
        <td>.</td>
        <td>.</td>
      </tr>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

这解决了我的问题

with open('output.xml', 'wb') as f:
    f.write(newdom)