Python 将xml格式转换为Quickbird元数据的格式化文本文件

Python 将xml格式转换为Quickbird元数据的格式化文本文件,python,xml,minidom,Python,Xml,Minidom,我有一个xml格式的Quickbird元数据: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <isd> <IMD> <VERSION>AA</VERSION> <GENERATIONTIME>2008-01-04T18:36:17.000000Z</GENERATIONTIME> <P

我有一个xml格式的Quickbird元数据:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<isd>
    <IMD>
        <VERSION>AA</VERSION>
        <GENERATIONTIME>2008-01-04T18:36:17.000000Z</GENERATIONTIME>
        <PRODUCTORDERID>005708443040_01_P001</PRODUCTORDERID>
        <PRODUCTCATALOGID>901001001E9ED900</PRODUCTCATALOGID>
    </IMD>
</isd>  
你能帮我做这个任务吗


非常感谢您的帮助。

这应该打印XML的所有内容(它不会像您预期的结果那样转换为驼峰大小写,因为无法知道哪些字符应保留为大写,哪些字符应转换为小写):

这将打印:

VERSION=“AA”;GENERATIONTIME=“2008-01-04T18:36:17.000000Z”;PRODUCTORDERID=“00570844340\u 01\u P001”;PRODUCTCATALOGID=“901001E9ED900”


请参阅此中的工作示例(单击“运行”查看结果)

您确定您的输入正确吗?它不是一个格式良好的XML文件,因为它既不关闭
标记,也不关闭
。分隔标记的分号不是非法的,但是对于XML文件来说,它们是非常不常见的。请编辑您的问题并添加一个有效的XML文件。是的,这是一个XML文件,它关闭tad和标记。还有一个问题:您实际Python代码中的最后一个
print
是否缩进?是的,我实际Python代码中的最后一个打印是缩进的。我发布了一个答案。它只是没有转换成驼峰大小写(程序必须知道哪些字母应该保持大写,而且不可能从标记名中推断出来),非常感谢。我可以问你更多的问题吗:在IMD中,我有childnode 1.7436662059000E+02。当我按照你的建议运行时,结果只是BAND_B=“”,而我希望结果是BEGIN_GROUP=BAND_BULLon=174.36663827;这将需要一个额外的嵌套循环(或者,如果您在第一次发布示例时已经包含了该细节,则需要一个不同的策略——对于一个简单的文件,当前的策略是可以的)。也许你可以从当前的例子中推断出解决方案。非常感谢。我可以问你更多的问题吗:在IMD中,我有childnode 1.7436662059000E+02。当我按照你的建议运行时,结果只是BAND_B=“”,而我希望结果是BEGIN_GROUP=BAND_B ULLon=174.36663827 END_GROUP=BAND_B。你能帮我吗?很抱歉,因为这是我第一次编写代码,所以我问了很多问题。是的,我将尝试根据当前示例编写。我认为您应该问一个新问题,因为有很多新的细节。对于更复杂的文件,我将使用不同的策略,例如XSLT(使用libxslt、xsltproc或Saxon等)。我看你是新来的。我建议您阅读以下内容:,正确使用编辑器(它可以帮助您格式化代码),包括格式良好的代码,并尽可能地描述您的问题。这不仅能帮助你得到更好的答案,还能避免被否决。
from xml.dom import minidom
xmldoc = minidom.parse("image.XML")
isd = xmldoc.getElementsByTagName("isd")[0]
imds = isd.getElementsByTagName("IMD")
for imd in imds:
    print (imd)
from xml.dom import minidom
xmldoc = minidom.parse("image.XML")
isd = xmldoc.getElementsByTagName("isd")[0]
imds = isd.getElementsByTagName("IMD")
for imd in imds:
   for child in imd.childNodes:
       if child.nodeType == minidom.Node.ELEMENT_NODE: 
            print child.nodeName+ ' = "' + child.childNodes[0].nodeValue + '"; ',