4

您将使用什么来更改 XML 文件,同时尽可能多地保留布局,包括缩进和注释?

我的问题是我有几个描述用户界面的大量手工编辑的 XML 文件,现在我需要将几个属性翻译成另一种语言。

我尝试过使用 Python + ElementTree 执行此操作,但它既没有保留空格也没有保留注释。

我已经看到针对类似问题建议使用 XSLT,但我认为在这种情况下这不是替代方案,因为我需要对每个属性进行一些逻辑和查找。

如果每个元素中的属性顺序也被保留,那将是更可取的,但我可以容忍更改的顺序。

4

2 回答 2

2

任何 DOM 操作模块都应该满足您的需求。布局只是一个文本数据,所以它在 DOM 中表示为文本节点:

>>> from xml.dom.minidom import parseString
>>> dom = parseString('''\
... <message>
...   <text>
...     Hello!
...   </text>
... </message>''')
>>> dom.childNodes[0].childNodes
[<DOM Text node "u'\n  '">, <DOM Element: text at 0xb765782c>, <DOM Text node "u'\n'">]
>>> text = dom.getElementsByTagName('text')[0].childNodes[0]
>>> text.data = text.data.replace(u'Hello', u'Hello world')
>>> print dom.toxml()
<?xml version="1.0" ?><message>
  <text>
    Hello world!
  </text>
</message>
于 2009-10-27T12:56:01.983 回答
1

如果您使用 XSLT 处理器,例如xt,那么您可以在 Java 中编写扩展方法来执行您需要的任意转换。

话虽如此,我已经成功地使用了 Python 的xml.dom.minidom模块进行这种转换。它确实保留了空白和布局。

于 2009-10-27T09:44:58.270 回答