0

おい。PythonWebアプリの設定用にconfig.xmlファイルが必要です。

car.xmlを手動で作成しました。次のようになります。

<car>
    <lights>
        <blinkers>off</blinkers>
    </lights>
</car>

次に、 xml.etree.ElementTreeを使用して、ブリンカーがオンかオフかを確認します。

import xml.etree.ElementTree as ET
tree = ET.parse('car.xml')
blinkers = tree.findtext('lights/blinkers')
print blinkers
> off

ブリンカーのオンとオフを切り替えたいのですが、どうすればよいですか?

4

5 に答える 5

2

親ノードのremoveメソッドを呼び出すことでノードを削除し、ET.SubElementを呼び出すことでノードを挿入できます。

import xml.etree.ElementTree as ET

def flip_lights(tree):
    lights = tree.find('lights')
    state=get_blinker(tree)
    blinkers = tree.find('lights/blinkers')
    lights.remove(blinkers)
    new_blinkers = ET.SubElement(lights, "blinkers")
    new_blinkers.text='on' if state=='off' else 'off'

def get_blinker(tree):
    blinkers = tree.find('lights/blinkers')
    return blinkers.text

tree = ET.parse('car.xml')
print(get_blinker(tree))
# off
flip_lights(tree)
print(get_blinker(tree))
# on
flip_lights(tree)
print(get_blinker(tree))
# off
flip_lights(tree)
print(get_blinker(tree))
# on
tree.write('car2.xml')
于 2010-10-03T14:59:15.923 に答える
2

構成ファイルを管理するためにPythonモジュールの代わりにXMLを使用することのメリットに対処せずに、以下を使用して要求したことを実行する方法を次に示しますlxml

>>> from lxml import etree
>>> xml = """<car>
   <lights>
      <blinkers>on</blinkers>
   </lights>
</car>"""
>>> doc = etree.fromstring(xml)
>>> elm = doc.xpath("/car/lights/blinkers")[0]
>>> elm.text="off"
>>> etree.tostring(doc)
'<car>\n   <lights>\n      <blinkers>off</blinkers>\n   </lights>\n</car>'
于 2010-10-03T17:13:02.997 に答える
1

この記事を見てください。

しかし、上記のAaronMcSmoothのコメントを検討してください。これは、全体的な問題に対する間違ったアプローチである可能性があります。

于 2010-10-03T13:52:32.317 に答える
0

beautifulstonesoupを使用してください。xmlの変更に関するセクションは次のとおりです。

http://www.crummy.com/software/BeautifulSoup/documentation.html#Modifying%20the%20Parse%20Tree

于 2010-10-03T14:11:36.257 に答える
0

XMLは、構成設定を格納するためのかなり貧弱な方法です。一つには、XMLは設定のコンテキストで正確に人間に優しいわけではありません。特にPythonの世界では、設定モジュールを使用することをお勧めします(@AaronMcSmoothがコメントしたように)。残念ながら、Javaの世界の多くのプロジェクトでは、設定にXMLを(誤って?)使用しているため、XMLがトレンドになっています。私はこの傾向が本当にひどいことを主張したいと思います。ネイティブ設定(Pythonのモジュール)またはYAMLのようなより人間に優しいものを使用します。

于 2010-10-03T14:15:13.607 に答える