我试图用一个小的python脚本将一些http有效负载转换为有效的XML,但我似乎无法过滤出有效负载周围的花括号。我使用以下python代码:
print "Python Script: Convert To XML"
class Converter:
def __init__(self,payload):
self.xml=""
self.xmlStart='<?xml version="1.0" ?><order>'
self.xmlStop='</order>'
self.payload=payload
def convert2XML(self):
elements=self.payload.split(',')
for item in elements:
label,value = item.split('=')
print "Label: %s, Value: %s" % (label,value)
self.xml+="<"+label+">"+value+"</"+label+">"
return self.xmlStart+self.xml+self.xmlStop
print "MESSAGE: ",message
print "PAYLOAD: ",payload
xml=Converter(payload)
result=xml.convert2XML()
输入有效负载是以下{itemA=value, itemB=value, itemC=value}
这导致了以下XML:
<?xml version="1.0" ?>
<order>
<{itemA>value</{itemA>
<itemB>value</itemB>
<itemC>value}</itemC>
</order>
我尝试使用
等语句过滤掉大括号text.replace('{', '')
text.replace('}', '')
不确定之前是否曾经问过这个问题,因为我的谷歌技能今天没有帮助我。
答案 0 :(得分:0)
Python中的字符串是不可变的。相反,尝试构建一个新的字符串,如:
newPayload1 = oldPayload.replace("}", "")
newPayload2 = newPayload1.replace("{", "")
请告诉我们您是否尝试过此操作?
答案 1 :(得分:0)
您可以删除有效负载的第一个和最后一个字符,并用逗号分隔 使用XML时,您应该使用关注所有标记内容的lxml库以及更多内容:
from lxml import etree
def convert2XML(payload):
root = etree.Element("order")
for key, value in payload:
sub = etree.SubElement(root, key) # adds the sub elements to root element
sub.text = value
return etree.tostring(root, xml_declaration=True, encoding="utf-8")
payload = "{itemA=value, itemB=value, itemC=value}"
pay = [item.split('=') for item in payload[1:-1].split(', ')]
print(pay) # >> pairs of item, value
xml = convert2XML(pay)
print(xml)
返回有效的xml字符串:
b"<?xml version='1.0' encoding='utf-8'?>\n<order><itemA>value</itemA><itemB>value</itemB><itemC>value</itemC></order>"