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

xtなどのXSLTプロセッサを使用する場合は、必要な任意の変換を実行できる拡張メソッドをJavaで記述できます。

そうは言っても、私はこの種の変換にPythonのxml.dom.minidomモジュールを正常に使用しました。空白とレイアウトは保持されます。

于 2009-10-27T09:44:58.270 に答える