XML を使用してサーバー呼び出しを行う Python を使用して API を開発しています。ライブラリ (例: http://wiki.python.org/moin/MiniDom ) を使用するか、文字列連結を使用して生成するために「より良い」(オーバーヘッドが少なく高速であることを意味する)かどうかについて議論しています。各リクエストに使用される XML。また、これから生成する XML は非常に動的になるため、要素を動的に管理できるものがメリットになるかどうかはわかりません。
5 に答える
私の本当の質問は、あなたが達成しようとしていることに対する最大の懸念は何ですか? 速度/メモリが心配なら、そうです、minidom はヒットします。かなり信頼性が高く、すぐに展開できるものが必要な場合は、それを使用することをお勧めします。
任意の言語 (Java、Python、C#、Perl など) で XML を処理するための私の提案は、既存のものを使用することを検討することです。誰もが少なくとも 1 回は独自の XML パーサーを作成したことがあります。公平を期すために、これらのライブラリは、遭遇する可能性のある問題の 99.5% を既に修正しています。
Python ライブラリの 1 つを利用することを強くお勧めします。MiniDom、ElementTree、lxml.etreeまたはpyxserなど。実行しない理由はなく、潜在的なパフォーマンスへの影響は最小限に抑えられます。
ただし、個人的には、代わりにsimplejson (または単にjson ) を使用することを好みます。
my_list = ["Value1", "Value2"]
json = simplejson.dumps(my_list)
# send json
LXMLをお勧めします。これは、非常に高速な C ライブラリlibxml2およびlibxsltのバインディングの Python ライブラリです。
LXML は XPATH をサポートし、elementTree実装を備えています。LXML には、 XML をオブジェクト階層として記述するためのobjectifyというインターフェースもあります。
from lxml import etree, objectify
E = objectify.ElementMaker(annotate=False)
my_alpha = my_alpha = E.alpha(E.beta(E.gamma(firstattr='True')),
E.beta(E.delta('text here')))
etree.tostring(my_alpha)
# '<alpha><beta><gamma firstattr="True"/></beta><beta><delta>text here</delta></beta></alpha>'
etree.tostring(my_alpha.beta[0])
# '<beta><gamma firstattr="True"/></beta>'
my_alpha.beta[1].delta.text
# 'text here'