Python lxml 中的 XML 漂亮打印失败

2023-12-13

我正在尝试使用 Python 2.7.6 中的 lxml 4.1.1 读取、修改和写入 XML 文件。

My code:

import lxml.etree as et

fn_xml_in = 'in.xml'
parser = et.XMLParser(remove_blank_text=True)
xml_doc = et.parse(fn_xml_in, parser)
xml_doc.getroot().find('b').append(et.Element('c'))
xml_doc.write('out.xml', method='html', pretty_print=True)

输入文件in.xml看起来像这样:

<a>
    <b/>
</a>

以及生成的输出文件out.xml:

<a>
    <b><c></c></b>
</a>

或者当我设置remove_blank_text=True:

<a><b><c></c></b></a>

我本来希望 lxml 在中插入换行符和缩进b元素:

<a>
    <b>
        <c></c>
    </b>
</a>

我怎样才能实现这个目标?

我尝试过一些tidylib 包装器,但它们似乎专注于 HTML 而不是 XML。

我还尝试添加换行符b's tail,但随后甚至压痕也被打破了。

Edit:我需要c元素在开始和结束标记中保持分离:<c></c>。这就是我使用的原因method='HTML'在示例中。


写入时使用“xml”输出方法(这是默认值,因此不必显式给出)。

Set the text的财产c元素为空字符串,以确保元素被序列化为<c></c>.

Code:

import lxml.etree as et

parser = et.XMLParser(remove_blank_text=True)
xml_doc = et.parse('in.xml', parser)

b = xml_doc.getroot().find('b')
c = et.Element('c')
c.text=''
b.append(c)

xml_doc.write('out.xml', pretty_print=True)

结果(out.xml):

<a>
  <b>
    <c></c>
  </b>
</a>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python lxml 中的 XML 漂亮打印失败 的相关文章

  • Django - 没有名为 _sqlite3 的模块

    我在 rhel 5 上安装了 django 1 4 默认情况下 rhel 5 中有 python 2 4 但要使用 django 1 4 我手动安装了 python 2 7 3 开发服务器运行良好 但是当我创建一个新项目并将 setting
  • 如何在c# wpf中获取元素的标签?

    我正在尝试使用 WPF 构建一个 GUI 在其中我可以绘制一些基本形状并将它们存储到 xml 文件中 形状是在 xaml 文件中设计的 我为每个形状添加了标签 现在我想在代码中获取它们的标签值 并将其作为属性存储在输出 xml 文件中 例如
  • 如果文件不存在,使用 python 添加一行

    我有一个 xml 文件如下
  • 处理 CFchart 时的实际 XML 文件位置

    谁能告诉我在使用 Coldfusion 时是否需要将 xml 文件放在单独的目录中 现在我已将 xml 文件保存在 cfm 文件所在的同一目录中 当我运行文件 cfm 时 它说 Could not locate the style file
  • 禁用特定 java 包的所有 checkstyle 检查

    我有两个包 即 com mydomain abc delegate xyz jaxws 托管 and com mydomain abc xyz jaxws managed 我要求仅对第二个包禁用 checkstyle 因为它们包含自动生成的
  • 每个值有多个键

    是否可以在 Python 字典中为每个值分配多个键 一种可能的解决方案是为每个键分配值 dict k1 v1 k2 v1 k3 v1 k4 v2 但这并不高效 因为我的数据文件大于 2 GB 否则你可以制作一个字典键的字典 key dic
  • 使用 XSLT 根据属性值合并 2 个 XML 文件?

    文件1 xml
  • Iron Python 错误:预期 或 bytearray,得到 用于串行通信

    无法理解这一点 当我使用 python shell 运行时 它可以工作 但不能 当使用 Iron python 调用时 它抛出上面的错误 C scriptEngine ExecuteFile path var testFn scriptSc
  • Python 到 exe:py2exe 与 pkg_resources 相关的问题

    我已经用 Python 构建了一个应用程序 我想将其分发到我的企业 但遗憾的是 无法在每台计算机上安装 Python 我想将应用程序转换为 exe 以便用户可以通过桌面上的快捷方式运行我的应用程序 这是我第一次尝试分发 所以请原谅我在这方面
  • Linq for xml 解析返回 null 元素

    我的 xml 文件如下所示
  • 在c中使用xslt创建xml文件

    我有 5 个不同的键 值对 并且我知道我的 xml 文件应该是什么样子 我怎样才能用它创建一个 xml 文件 1 我总是可以做 printf 不太好 2 我可以使用 xslt 样式表 xsl 文件 来执行此操作吗 而且 我还希望能够进行我刚
  • 如何从 PHP 输出 XML 字符串

    我正在获取一个 XML 字符串并在 PHP 中对其进行编辑 以便在访问 PHP 文件时最终输出编辑后的 XML 字符串 我一直在尝试使用 echo 和 print 来输出 XML 文档 但它只打印最里面标签内的数据 我希望它的功能就像直接加
  • 获取对 SOAP 的 XML 响应中的节点值

    我在 PowerShell 中发出 SOAP 请求 如下所示 uri https secure echosign com services EchoSignDocumentService20 WSDL sun Invoke WebReque
  • Ubuntu Python shebang 线不工作

    无法让 shebang 线在 Ubuntu 中为 python 脚本工作 我每次只收到命令未找到错误 test py usr bin env python print Ran which python usr bin python 在 sh
  • 使用 LinearLayout 将按钮放在屏幕底部?

    我有以下代码 如何使 3 个按钮位于底部
  • 通过 XSL 查看 XML 到 XHTML 转换中的源代码

    我正在尝试使用 XSL 文件将 XML 文件转换为 XHTML 文件 如何查看转换后输出的XHTML源代码 我目前正在通过 Firefox 查看结果 但我看到的只是 XHTML 文件的渲染版本 我想查看源代码 但是当我转到 查看 gt 页面
  • 如何删除Python字符串的最后一个utf8字符

    我有一个包含 utf 8 编码文本的字符串 我需要删除最后一个 utf 8 字符 到目前为止我做到了 msg msg 1 但这只会删除最后一个字节 只要最后一个字符是 ASCII 代码 它就可以工作 当最后一个字符是多字节字符时 它不再起作
  • 如何限制 sympy FiniteSet 包含符号

    我对 sympy 还很陌生 我尝试使用 linsolve 求解线性方程组 这产生了一个可以用以下两行重现的解决方案 d symbols d solution sets FiniteSet d 1 d 4 d 5 d 我的解决方案遵循限制 即
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som

随机推荐