使用xm打印子节点

2024-06-06 14:09:03 发布

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

下面是我正在使用的api xml:

<response>
    <request>polaris</request>
    <status>0</status>
    <verbiage>OK</verbiage>
    <object id="S251">
        <type id="1">Star</type>
        <name>α UMi</name>
        <catId>α UMi</catId>
        <constellation id="84">Ursa Minor</constellation>
        <ra unit="hour">2.5301944</ra>
        <de unit="degree">89.264167</de>
        <mag>2.02</mag>
    </object>
    <object id="S251">
        <type id="1">Star</type>
        <name>α UMi</name>
        <catId>α UMi</catId>
        <constellation id="84">Ursa Minor</constellation>
        <ra unit="hour">2.5301944</ra>
        <de unit="degree">89.264167</de>
        <mag>2.02</mag>
    </object>
</response>

这是我目前的代码:

   #!/usr/bin/env python

   import xml.etree.ElementTree as ET
   tree = ET.parse('StarGaze.xml')
   root = tree.getroot()
   callevent=root.find('polaris')

   Moc1=callevent.find('polaris')


   for node in Moc1.getiterator():
       if node.tag=='constellation id':
           print node.tag, node.attrib, node.text'

我希望能够打印定义的子项。例如:

星座id=

ra单位=

任何帮助都将不胜感激


Tags: nameidnodeobjectresponsetypeunitde
1条回答
网友
1楼 · 发布于 2024-06-06 14:09:03

迭代object节点,并使用findall()find()方法和.attrib属性定位constellationra节点:

import xml.etree.ElementTree as ET

tree = ET.parse('StarGaze.xml')
root = tree.getroot()

for obj in root.findall("object"):
    constellation = obj.find("constellation")
    ra = obj.find("ra")

    print(constellation.attrib["id"], constellation.text, ra.attrib["unit"], ra.text)

将打印:

84 Ursa Minor hour 2.5301944
84 Ursa Minor hour 2.5301944

相关问题 更多 >