首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用xml打印子节点

使用xml打印子节点
EN

Stack Overflow用户
提问于 2017-01-12 06:40:24
回答 1查看 23关注 0票数 1

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

代码语言:javascript
复制
<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>

下面是我当前的代码:

代码语言:javascript
复制
   #!/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 unit=

如有任何帮助,将不胜感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-12 06:56:30

遍历object节点,并使用findall()find()方法以及.attrib属性找到constellationra节点:

代码语言:javascript
复制
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)

将打印:

代码语言:javascript
复制
84 Ursa Minor hour 2.5301944
84 Ursa Minor hour 2.5301944
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41602047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档