在xml python 2.7中插入值的更好方法

在xml python 2.7中插入值的更好方法,python,xml,soap,Python,Xml,Soap,我一直在寻找一个更好的解决方案,这是我正在做的。我需要构造一个xml以发送到SOAP服务,但我需要以友好的方式生成xml。问题是,我发现这段时间很长,我认为一定有更好的方法来实现这一点,这可能不是问题。我使用的是python 2.7.5,这是我的XML(有点大): 有更好的方法吗?谢谢 您可以使用适当的方法,也可以编写一个使用模板生成单个“shipping”元素的方法,例如: def generate_tag(name, values, version='1'): return '\n'

我一直在寻找一个更好的解决方案,这是我正在做的。我需要构造一个xml以发送到SOAP服务,但我需要以友好的方式生成xml。问题是,我发现这段时间很长,我认为一定有更好的方法来实现这一点,这可能不是问题。我使用的是python 2.7.5,这是我的XML(有点大):

有更好的方法吗?谢谢

您可以使用适当的方法,也可以编写一个使用模板生成单个“shipping”元素的方法,例如:

def generate_tag(name, values, version='1'):
    return '\n'.join([
        '<v{0}:{1}>'.format(version, name),
        '\n'.join(
            '\t<v{2}:{0}>{1}</v{2}:{0}>'.format(k, v, version) for k, v in values.iteritems()
        ),
        '</v{0}:{1}>'.format(version, name)
    ])

# Output:
>>> print generate_tag('Shipping', {"Total": "100", "Type": "A"})
<v1:Shipping>
    <v1:Total>100</v1:Total>
    <v1:Type>A</v1:Type>
</v1:Shipping>
def generate_标记(名称、值、版本='1'):
返回'\n'。加入([
''格式(版本、名称),
“\n”。加入(
“\t{1}”.values.iteritems()中k,v的格式(k,v,version)
),
“”.格式(版本、名称)
])
#输出:
>>>打印生成标签('Shipping',{“Total”:“100”,“Type”:“A”})
100
A.
但是,正如你所看到的,这很快就会变得一团糟

不过,使用库(如或)对您更有好处,因为它们将处理任何需要的转义,并在您以后需要进行更改时提供更好的界面

SoapMessage = SINGLE_PAYMENT%...and replace here with variables passed to this function
def generate_tag(name, values, version='1'):
    return '\n'.join([
        '<v{0}:{1}>'.format(version, name),
        '\n'.join(
            '\t<v{2}:{0}>{1}</v{2}:{0}>'.format(k, v, version) for k, v in values.iteritems()
        ),
        '</v{0}:{1}>'.format(version, name)
    ])

# Output:
>>> print generate_tag('Shipping', {"Total": "100", "Type": "A"})
<v1:Shipping>
    <v1:Total>100</v1:Total>
    <v1:Type>A</v1:Type>
</v1:Shipping>