【问题标题】:How to edit an XML file in Python?如何在 Python 中编辑 XML 文件?
【发布时间】:2016-07-18 15:22:54
【问题描述】:

我有一个 resx 文件,它使用 XML 和一堆看起来像这样的数据:

<data name="key_first" xml:space="preserve">
    <value>Text 1</value>
</data>
<data name="key_second" xml:space="preserve">
    <value>Text 2</value>
</data>
<data name="key_third" xml:space="preserve">
    <value>Text 3</value>
</data>

名称值都共享一个单词(例如:“key”)。我想在 Python 中做的是获取这个“数据”名称值(“键+后面的任何内容”)并将其添加到“值”文本中,然后保存新文件,但我对 XML/非常陌生Python世界,我有点迷路了。我希望它看起来像这样:

<data name="key_first" xml:space="preserve">
    <value>[key_first] Text 1</value>
</data>
<data name="key_second" xml:space="preserve">
    <value>[key_second] Text 2</value>
</data>
<data name="key_third" xml:space="preserve">
    <value>[key_third] Text 3</value>
</data>

我该怎么做?我应该使用 minidom 还是 Element Tree?

【问题讨论】:

  • 从技术上讲,任何 xml 解析器都可以完成这项工作 - 您可以使用 sax 解析器 FWIW - 但没有人因为选择 ElementTree 而被解雇。
  • 就我个人而言,我会将 lxml 与 XSLT 一起使用,并在需要时添加自定义回调函数。

标签: python xml database loops resx


【解决方案1】:

选择哪种 XML 解析器取决于您,但您可以通过以下方式使用 xml.etree.ElementTree 解决此问题:想法是遍历所有 data 节点,从 @987654322 获取 name 属性值@dictionary,找到里面的value元素并适当设置.text

import xml.etree.ElementTree as ET

data = """<parent>
    <data name="key_first" xml:space="preserve">
        <value>Text 1</value>
    </data>
    <data name="key_second" xml:space="preserve">
        <value>Text 2</value>
    </data>
    <data name="key_third" xml:space="preserve">
        <value>Text 3</value>
    </data>
</parent>"""

tree = ET.fromstring(data)

for data in tree.findall("data"):
    name = data.attrib["name"]
    value = data.find("value")
    value.text = "[%s] %s" % (name, value.text)

print(ET.tostring(tree))

打印:

<parent>
    <data name="key_first" xml:space="preserve">
        <value>[key_first] Text 1</value>
    </data>
    <data name="key_second" xml:space="preserve">
        <value>[key_second] Text 2</value>
    </data>
    <data name="key_third" xml:space="preserve">
        <value>[key_third] Text 3</value>
    </data>
</parent>

【讨论】:

    【解决方案2】:

    使用ElementTree API 读取XML 文件,然后您可以使用find 查找要替换的单词或将其用作索引,然后您可以从那里插入您需要插入的内容。请参阅以下链接:

    How to update/modify an XML file in python?

    https://docs.python.org/2/library/xml.etree.elementtree.html

    http://luisartola.com/software/2010/easy-xml-in-python/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-11
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多