【问题标题】:How to write XML with "usual" self-closing/header tags?如何使用“通常的”自关闭/标题标签编写 XML?
【发布时间】:2018-02-15 07:59:23
【问题描述】:

这是我的代码:

from xml.dom import minidom as md
doc  = md.parse('file.props')

# operations with doc

xml_file = open('file.props', "w")
doc.writexml(xml_file, encoding="utf-8")
xml_file.close()

我解析一个 XML,我做了一些操作,然后我打开并在上面写。但例如,如果在我的文件中得到:

<MY_TAG />
       ^

改写为:

<MY_TAG/>
       ^

我知道这似乎无关紧要,但我的文件一直受到版本控制 GIT 的监控,它表示每次写入时该行都是“不同的”。

与标题相同:

<?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

变成:

<?xml version="1.0" encoding="utf-8"?><Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

这很烦人。有什么线索吗?

【问题讨论】:

  • 不需要解析器来维护本地'格式;。编写该标签的同样有效的方法是 &lt; MY_TAG /&gt; 甚至 &lt; MY_TAG / &gt; ...

标签: python xml python-2.7 formatting


【解决方案1】:

通过解析和序列化保留 XML 格式的怪癖是非常不可能的。如果您需要进行文本级比较,唯一的方法是规范化您正在比较的格式(有各种 XML 规范化工具)。

原则上你可以配置 git 使用 XML 感知的 diff 工具进行比较,但请不要问我细节,这不是我自己做过的事情。我一直忍受着它效果不佳的事实。

【讨论】:

    猜你喜欢
    • 2014-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2012-12-11
    • 1970-01-01
    相关资源
    最近更新 更多