Print all xml child node using python

后端 未结 2 648
小蘑菇
小蘑菇 2021-01-24 09:07

I want to print all the values of the \"ClCompiler\" child of \"ItemGroup\" of my xml file.

my python code

tree = minidom.parse(project_path)
itemgroup         


        
2条回答
  •  情歌与酒
    2021-01-24 09:43

    You made it half way.
    You found all the ItemGroup nodes in the document. Now, you have to iterate through each of them and find its ClCompile children (most likely only one of them will have such children).

    Here's the code:

    from xml.dom import minidom
    
    project_path = "./a.vcxproj"
    item_group_tag = "ItemGroup"
    cl_compile_tag = "ClCompile"
    
    
    def main():
        tree = minidom.parse(project_path)
        item_group_nodes = tree.getElementsByTagName(item_group_tag)
        for idx, item_group_node in enumerate(item_group_nodes):
            print("{} {} ------------------".format(item_group_tag, idx))
            cl_compile_nodes = item_group_node.getElementsByTagName(cl_compile_tag)
            for cl_compile_node in cl_compile_nodes:
                print("\t{}".format(cl_compile_node.toxml()))
    
    
    if __name__ == "__main__":
        main()
    

    Notes:

    • I ran the code with Python 3.4 (since no version was mentioned in the question). 2.7 compatibility will require some minor changes.
    • I did my tests on a VStudio project where the second search tag was ClInclude, but I guess that's an fairly old version.
    • The 1st print line is only for illustrating the parent ItemGroup node. Comment it out to achieve your desired output.
    • Needless to say that you should modify project_path to point to your project file.

提交回复
热议问题