Python生成拼接XML报文的两种实现方式详解
本文介绍使用Python生成XML报文的两种常见方法。第一种通过循环自增ID并拼接时间戳生成基础报文,适用于MQ接口发送场景;第二种基于预定义模板,利用列表遍历和字符串替换功能生成多行XML节点。代码包含完整实现逻辑,可直接参考用于实际开发中的报文构造需求。
近期工作中遇到临时需求,需要通过MQ接口发送XML格式的报文。为此编写了一个简单的Python程序来处理报文生成任务。
实现方式之一是通过循环自增订单ID,并将当前时间格式化后拼接,从而生成包含多个item节点的XML报文结构。
具体代码逻辑见Test_001.py文件。该脚本首先初始化orderId为空字符串,然后遍历1到4的ID范围。在每次循环中,构建包含orderID和time标签的item节点,并将当前系统时间(格式为YYYY-MM-DD HH:MM:SS)填入time标签。所有item节点拼接后,外层包裹MbfBody标签,最终打印出完整的XML报文字符串。
# encoding=utf-8
import time
orderId = ''
s1= "\n"
#
for ID in range(1,5):
item1 = "<item>" + \
"<orderID>" + str(ID) + "</orderID>" + \
"<time>" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + "</time>" + \
"</item>"
orderId+=item1
messge = "<MbfBody>" + orderId + "</MbfBody> "
print(messge)
另一种实现方式是基于预定义的XML模板进行字符串替换。首先定义一个包含多个字段值的字符串,按逗号分割为列表。接着定义一个XML模板字符串,其中包含VAR_XML、//MbfBody/value和COLUMN(VALUE,y)等占位符。通过自定义函数add_xml,遍历列表中的每个值,将其转换为大写,并在模板中进行两次小写替换和一次大写替换,生成对应的XML节点字符串。最后将所有节点字符串用换行符连接,返回最终的多行XML字符串结果。
#encoding=utf-8
# str=input("输入字段:")
str='lxs,hqq,lj,xc'
List=str.split(',')
# str_xml=input("输入替换的模板:")
str_xml='<step id="xml_set_xml_value" comment="value" isrun="true"><param id="xml">VAR_XML</param><param id="xpath">//MbfBody/value</param><param id="value">COLUMN(VALUE,y)</param></step>'
#列表追加,回车成多行
def add_xml(L):
xml_list=[]
s1= '\n' #回车换行符
for value in L:
VAULE=value.upper()
xml= str_xml.replace('value',value,2).replace('VALUE',VAULE,1) #替换模板中的值为列表中的值,小写两次,大写一次
xml_list.append(xml)
xml_str=s1.join(xml_list) #list 更新成str
return xml_str
#字符串追加,一行
# def add_xml(L):
# xml_list=''
# for value in L:
# VAULE=value.upper()
# xml= str_xml.replace('value',value,2).replace('VALUE',VAULE,1) #替换模板中的值为列表中的值,小写两次,大写一次
# xml_list+=xml
# # xml_str=s1.join(xml_list) #list 更新成str
# return xml_list
test=add_xml(List)
print(test)
以上介绍了Python生成拼接XML报文的两种示例方法,分别适用于自增ID拼接和模板替换场景。希望这些内容能为您提供参考,欢迎继续支持本站获取更多技术分享。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









