lxml.builder添加xml参数

时间:2016-11-09 11:07:55

标签: python xml lxml

我需要在以下XML文件中添加额外的参数:

    <users>
      <user id="1000">
        <params>
          <param name="password" value="c16b463e4aed7f04f102f2b6a8b7471d"/>
        </params>
        <variables>
          <variable name="mailbox" value="1000"/>  
        </variables>
      </user>
   </users>

XML代码工作正常,但现在需要在用户部分添加变量部分,例如:

    print "Content-Type: text/xml"
    print

    from lxml.builder import E
    from lxml import etree

    doc = (
    E.document(
        E.section(name="directory"), type="freeswitch/xml")
    )

    ...

    groups = dom.find("groups")
    searchStr = 'group[@name="{}"]'.format("default")
    results = groups.xpath(searchStr)
    if len(results) > 0:
        grp = results[0]
    else:
        grp = E.group(
            E.users()
            , name="default")
        groups.append(grp)

    # add the new user
    grp.find("users").append(
        E.user(
            E.params(
                E.param(name=password_param, value=password),
                E.param(name=vm_password_param, value=vm_password))
            , id=username)                
    )

lxml.builder库不允许我在E.user部分下添加E.variables。追加新栏目的正确方法是什么?

class Topic(Model):

 categories=ManyToManyField(Category)

1 个答案:

答案 0 :(得分:0)

    grp.find("users").append(
        E.user(
            E.params(
                E.param(name=password_param, value=password),
                E.param(name=vm_password_param, value=vm_password)),
            E.variables(
                E.var(name=mailbox_param, value=username)),
            id=username),
    )