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

2024-09-29 23:15:30 发布

您现在位置:Python中文网/ 问答频道 /正文

与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>

只需评论<;对象>;标签

<!--<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()

Tags: nameidnodenumberdeveloperobjectvaluecomment

热门问题