5

以下を含む「MyData.xml」という名前の既存の単純な XML ファイルがあるとします。

<?xml version="1.0" encoding="utf-8" ?>
<myElement>foo</myElement>

「foo」のテキスト値を「bar」に変更すると、次のようになります。

<?xml version="1.0" encoding="utf-8" ?>
<myElement>bar</myElement>

完了したら、変更を保存します。

これらすべてを達成するための最も簡単で簡単な方法は何ですか?

4

4 に答える 4

4

Python のminidomを使用する

基本的には、次の手順を実行します。

  1. XML データを DOM オブジェクトに読み込む
  2. DOM メソッドを使用してドキュメントを変更する
  3. 新しい DOM オブジェクトを新しい XML ドキュメントに保存する

このプロセスを通じて、python 仕様はかなり適切にあなたの手を握るはずです。

于 2008-10-07T16:29:06.753 に答える
3

これは、 @ Ryanの答えに基づいて私が書いたものです:

from xml.dom.minidom import parse
import os

# create a backup of original file
new_file_name = 'MyData.xml'
old_file_name = new_file_name + "~"
os.rename(new_file_name, old_file_name)

# change text value of element
doc = parse(old_file_name)
node = doc.getElementsByTagName('myElement')
node[0].firstChild.nodeValue = 'bar'

# persist changes to new file
xml_file = open(new_file_name, "w")
doc.writexml(xml_file, encoding="utf-8")
xml_file.close()

これが最も簡単で簡単な方法かどうかはわかりませんが、うまくいきます。( @Javier の回答はコード行数が少ないですが、非標準ライブラリが必要です)

于 2008-10-07T21:07:57.360 に答える
3

迅速で重要でない XML 操作については、私はP4Xが本当に好きです。次のように書きましょう。

import p4x
doc = p4x.P4X (open(file).read)
doc.myElement = 'bar'
于 2008-10-07T16:29:04.053 に答える
1

また、Uche Ogbuji の優れた XML データ バインディング ライブラリである Amara もチェックしてください: http://uche.ogbuji.net/tech/4suite/amara

(ドキュメントはこちら: http://platea.pntic.mec.es/~jmorilla/amara/manual/ )

Amara の優れた点は、XML ドキュメントを Python オブジェクトに変換することです。そのため、次のような操作を実行できます。

record = doc.xml_create_element(u'Record')

nameElem = doc.xml_create_element(u'Name', content=unicode(name))

record.xml_append(nameElem)

valueElem = doc.xml_create_element(u'Value', content=unicode(value))

record.xml_append(valueElem

(これにより、Name 要素と Value 要素を含む Record 要素が作成されます (これには、name 変数と value 変数の値が含まれます))。

于 2008-10-07T21:42:17.293 に答える