如何在Python中只删除父元素而不删除其子元素?

时间:2018-03-28 10:41:09

标签: python xml dom

与JavaScript中的问题类似的问题

我有一个xml,想要只注释没有子文件的父标签 如下例所示:

<object id="12">
 <process name="Developer">
  <appdef>
   <attributes>
    <attribute name="X">
        <ProcessValue datatype="number" value="15" />
    </attribute>
    <attribute name="Y">
        <ProcessValue datatype="number" value="59" />
    </attribute>
   </attributes>
  </appdef>
 </process>
</object>

并评论&lt;对象&gt;标签

<!--<object id="12">-->
 <process name="Developer">
   <appdef>
     <attributes>
       <attribute name="X">
        <ProcessValue datatype="number" value="15" />
       </attribute>
       <attribute name="Y">
        <ProcessValue datatype="number" value="59" />
       </attribute>
     </attributes>
   </appdef>
 </process>
<!--</object>-->

我有一个代码来评论标签,但它也评论了它的所有孩子。

非常感谢,感谢您的帮助

由于混淆,我附上了整个代码:

from xml.dom import minidom


xml = """\
  <bpr:release xmlns:bpr="http://www.blueprism.co.uk/product/release">
   <object id="0e694daf-836e-44a9-816a-9b8127abb7b2" name="Developer 2 
     ex" xmlns="http://www.blueprism.co.uk/product/process">
    <process name="Developer 2 ex" version="1.0" bpversion="5.0.33.0" 
      narrative="BO for automation the HTML page&#xD;&#xA;" type="object" 
       runmode="Exclusive">
        <appdef>
            <attributes>
                <attribute name="X">
                    <ProcessValue datatype="number" value="15" />
                </attribute>
                <attribute name="Y">
                    <ProcessValue datatype="number" value="59" />
                </attribute>
            </attributes>
        </appdef>
       </process>
      </object>
    </bpr:release>
    """

def comment_node(node):
    comment = node.ownerDocument.createComment(node.toxml())
    print(comment)
    node.parentNode.replaceChild(comment, node)
    return comment


doc = minidom.parseString(xml).documentElement

comment_node(doc.getElementsByTagName('object')[-1])

xml = doc.toxml()

0 个答案:

没有答案