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

1 投票
1 回答
1056 浏览
提问于 2025-04-18 10:19

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

<?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 = "005708443040_01_P001"; productCatalogId = "901001001E9ED900"; childCatalogId = "202001001E9ED800";

我写了下面的python代码,但结果并没有达到我的预期:

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)

你能帮我一下,告诉我该怎么做吗?

非常感谢你的帮助。

1 个回答

0

这段代码会打印出XML里的所有内容(它不会像你期望的那样把字母转换成驼峰式,因为没有办法知道哪些字母该大写,哪些该小写):

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 + '"; ',

运行后会打印出:

VERSION = "AA"; GENERATIONTIME = "2008-01-04T18:36:17.000000Z"; PRODUCTORDERID = "005708443040_01_P001"; PRODUCTCATALOGID = "901001001E9ED900";

你可以在这个Python Fiddle里看到一个实际的例子(点击“RUN”按钮查看结果)

撰写回答