1

私はこのようなxmlファイルを持っています:

<lala>
  <blabla>
    <qweqwe>test</qweqwe>
  </blabla>
</lala>

それを開いて、qweqweのtestを別の値(たとえばnewtest)に変更する必要があります。その後、新しいxmlファイルのように保存する必要があります。Pythonを使用して最善の方法でそれを行う方法を教えてください。

4

6 に答える 6

2

使用をお勧めしlmxlます-簡単な例は次のとおりです。

from lxml import etree as et

>>> xml="""<lala>
  <blabla>
    <qweqwe>test</qweqwe>
  </blabla>
</lala>
"""
>>> test = et.fromstring(xml)
>>> for i in test.xpath('//qweqwe'):
    i.text = 'adsfadfasdfasdfasdf' # put logic here


>>> print et.tostring(test) # write this to file instead
<lala>
  <blabla>
    <qweqwe>adsfadfasdfasdfasdf</qweqwe>
  </blabla>
</lala>
于 2012-10-04T14:07:20.780 に答える
1

ここにある他のすべてのXMLの質問と同様に、Pythonについては次を参照してください。lxml

リンク: http: //lxml.de/

于 2012-10-04T13:49:04.873 に答える
0

test のすべてのインスタンスを変更しようとしている場合は、ファイルを開いて一致する文字列を探すだけです

それで

result = []
f = open("xml file")

 for i in f:
  if i == "<qweqwe>test</qweqwe>":
   i = "<qweqwe>My change</qweqwe>"
  result.append(i)

 f.close()

 f = open("new xml file")
 for x in result:
  f.writeline(x)
于 2012-10-04T14:07:36.840 に答える
0

これは、xml 要素の値の変更に関する質問ですが、代わりに提案された回答を使用して xml 要素のテキストを変更することは、それほど難しくありません。

于 2012-10-04T13:57:28.913 に答える
0

このようなタスクについては、ライブラリに組み込まれているminidomが迅速かつ簡単であることがわかりました。ただし、速度とメモリ使用量に関して、他のさまざまなライブラリと広範囲に比較したとは言えません。

私はそれが軽量で、開発が速く、Python 2.0以降に存在することが好きです

于 2012-10-04T13:55:04.127 に答える
0

同じことをしようとしているがエンコーディングに問題がある人にとって、これは .xml を UTF-16 エンコーディングに変更する一般化されたソリューションでした。

Python 2.7 で、「a」が python の「作業フォルダー」にあるフォルダー「a」にある「b.xml」という名前の .xml ファイルを変更して機能しました。Python 2.7以外でさらに使用する際に(私にとっては)エンコードエラーを発生させることなく、新しい変更されたファイルをフォルダー「a」に「c.xml」として出力します。

file = io.open('a/b.xml', 'r', encoding='utf-16')
    lines = file.readlines()
    outFile = open('a/c.xml', 'w')
    for line in lines[0:len(lines)]:
        #replace author:
        pattern = '<Author>'
        subst = '    <Author>' + domain + '\\' + user_name + '</Author>'
        if pattern in line:
            line = subst
            print line

        outFile.writelines(line)
于 2018-01-04T01:47:03.500 に答える