簡體   English   中英

XQuery轉換為API Python字符串

[英]XQuery to API Python String

我正在使用Postman將Xqueries轉換為API的Python字符串。 我現在需要能夠在不使用Postman的情況下將純Xquery字符串轉換為Python中的API字符串。

例如,這是Xquery作為字符串

query_string = "xquery version '1.0-ml'; declare namespace html = 'http://www.w3.org/1999/xhtml'; fn:count(fn:collection('foo'))"

使用郵遞員將其轉換為以下字符串:

"xquery=xquery%20version%20%221.0-ml%22%3B%0Adeclare%20namespace%20html%20%3D%20%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%3B%0Afn%3Acount(fn%3Acollection('foo'))%0A%0A"

我現在需要創建與上述相同的字符串。 如果我嘗試使用urrllib.parse.quote,它將更改括號和'並生成字符串:

urllib.parse.quote(query_string)

'xquery%20version%20%271.0-ml%27%3B%20declare%20namespace%20html%20%3D%20%27http%3A//www.w3.org/1999/xhtml%27%3B%20fn%3Acount%28fn%3Acollection%28%27foo%27%29%29'

還有其他方法來獲得所需的字符串結果以匹配Postman使用普通Python生成的結果嗎?

我不確定問題的表達方式是理想的結果,但是如果您不希望對括號進行編碼(不確定為什么要這樣做,因為它是正確的行為),則可以將safe參數傳遞給urllib.parse.quote

>>> urllib.parse.quote(query_string, safe='()')
'xquery%20version%20%271.0-ml%27%3B%20declare%20namespace%20html%20%3D%20%27http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml%27%3B%20fn%3Acount(fn%3Acollection(%27foo%27))'

在使用API​​之后,我發現它可以正常工作:

payload = 'xquery=' + urllib.parse.quote(query_string, safe="'()")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM