私はgooglecheckoutapiと統合しており、それらのすべての属性の属性値にハイフンが含まれています。したがって、注文を請求するリクエストを作成するには、次のようなxml投稿を送信する必要があります。
<?xml version="1.0" encoding="UTF-8"?>
<charge-and-ship-order xmlns="http://checkout.google.com/schema/2" google-order-number="6014423719">
<amount currency="USD">335.55</amount>
</charge-and-ship-order>
属性「google-order-number」を使用してそのxmlを構築するのに問題があります。空のノードを作成する場合は、次のコードが機能します。
>>> xml=XMLBuilder()
>>> xml << ('charge-and-ship-order, {'xmlns':'xxx','google-order-number':'3433'})
>>> str(xml)
>>> <charge-and-ship-order google-order-number="3433" xmlns="xxx" />
しかし、文書化された方法を使用して金額の子ノードを作成しようとすると、次のようになります。
>>> xml=XMLBuilder()
>>> with xml('charge-and-ship-order', xmlns='xxx', google-order-number='3433'}):
>>> with xml('amount', currency="USD"):
>>> xml << '4.54'
次のようなエラーが発生します。
SyntaxError: keyword can't be an expression
私も試しました:
>>> xml=XMLBuilder()
>>> with xml('charge-and-ship-order', {'xmlns':'xxx', 'google-order-number':'3433'}):
>>> with xml << 'test'
XMLBuilderライブラリに次のようなトレースバックがあります
File "/xmlbuilder/xmlbuilder/__init__.py", line 102, in __call__
x(*dt,**mp)
File "/xmlbuilder/xmlbuilder/__init__.py", line 36, in __call__
text = "".join(dt)
TypeError: sequence item 0: expected string, dict found
そのような属性を使用する方法についてのアイデアはありますか?http://pypi.python.org/pypi/xmlbuilderにあるXMLBuilderライブラリを使用しています