代码之家  ›  专栏  ›  技术社区  ›  gsamaras

强制ElementTree使用结束标记

  •  0
  • gsamaras  · 技术社区  · 6 年前

    而不是:

    <child name="George"/>
    

    在XML文件中,我需要:

    <child name="George"></child>
    

    一个难看的解决方法是将空白写为文本(而不是空字符串,因为它会忽略它):

    import xml.etree.ElementTree as ET
    ch = ET.SubElement(parent, 'child')
    ch.set('name', 'George')
    ch.text = ' '
    

    然后,由于我使用的是Python2.7,我阅读了 Python etree control empty tag format

    ch = ET.tostring(ET.fromstring(ch), method='html')
    

    但这给了:

    TypeError: Parse() argument 1 must be string or read-only buffer, not Element
    

    我不知道我该怎么做才能解决它。有什么想法吗?

    1 回复  |  直到 6 年前
        1
  •  2
  •   zipa    6 年前

    如果你这样做,它应该在2.7中工作得很好:

    from xml.etree.ElementTree import Element, SubElement, tostring
    
    parent = Element('parent')
    ch = SubElement(parent, 'child')
    ch.set('name', 'George')
    
    print tostring(parent, method='html')
    #<parent><child name="George"></child></parent>
    
    print tostring(child, method='html')
    #<child name="George"></child>