I have such an XML structure (output from Esprima ASL converted from JSON), it can become even more nested than this ( ASL.xml ):
<?xml version="1.0" encoding="UTF-8" ?> <program> <type>Program</type> <body> <type>VariableDeclaration</type> <declarations> <type>VariableDeclarator</type> <id> <type>Identifier</type> <name>answer</name> </id> <init> <type>BinaryExpression</type> <operator>*</operator> <left> <type>Literal</type> <value>6</value> </left> <right> <type>Literal</type> <value>7</value> </right> </init> </declarations> <kind>var</kind> </body> </program>
I usually use for node in root.childNodes` for XML, but this only works for direct children:
import xml.dom.minidom as md dom = md.parse("ASL.xml") root = dom.documentElement for node in root.childNodes: if node.nodeType == node.ELEMENT_NODE: print node.tagName,"has value:", node.nodeValue:, "and is child of:",node.parentNode.tagName
How can I move all XML elements no matter how many nested elements?
source share