使用python 3解析XML子元素

发布于 2025-01-18 20:38:55 字数 1584 浏览 2 评论 0原文

我有一个如下所示的 XML 文件:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <geoEventDefinition guid="3ab37e92-825c-4fdf-afa6-7b7536999ccd">
     <fieldDefinitions>
         <fieldDefinition name="id" type="String" cardinality="One">
             <fieldDefinitionTag>
                 <name>TRACK_ID</name>
             </fieldDefinitionTag>
             <fieldDefinitions/>
         </fieldDefinition>
         <fieldDefinition name="position" type="Group" cardinality="One">
             <fieldDefinitions>
                 <fieldDefinition name="longitude" type="Double" cardinality="One">
                     <fieldDefinitions/>
                 </fieldDefinition>
                 <fieldDefinition name="latitude" type="Double" cardinality="One">
                     <fieldDefinitions/>
                 </fieldDefinition>
             </fieldDefinitions>
         </fieldDefinition>
     </fieldDefinitions> </geoEventDefinition>

我正在迭代该文件以检索 fieldDefinition 属性(即 {'name': 'id', 'type': 'String', ' cardinality': 'One'}) 使用以下内容:

from xml.etree import ElementTree as ET
tree = ET.parse(xmlFile)
root = tree.getroot()

for child in root.iter('fieldDefinition'):
    print(child.attrib)

我还需要返回 fieldDefinitionTag< 下的 name 标签数据(即 TRACK_ID) /strong>如果是的话存在,但无法弄清楚如何做到这一点。

任何帮助表示赞赏。

I have an XML file like below:

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <geoEventDefinition guid="3ab37e92-825c-4fdf-afa6-7b7536999ccd">
     <fieldDefinitions>
         <fieldDefinition name="id" type="String" cardinality="One">
             <fieldDefinitionTag>
                 <name>TRACK_ID</name>
             </fieldDefinitionTag>
             <fieldDefinitions/>
         </fieldDefinition>
         <fieldDefinition name="position" type="Group" cardinality="One">
             <fieldDefinitions>
                 <fieldDefinition name="longitude" type="Double" cardinality="One">
                     <fieldDefinitions/>
                 </fieldDefinition>
                 <fieldDefinition name="latitude" type="Double" cardinality="One">
                     <fieldDefinitions/>
                 </fieldDefinition>
             </fieldDefinitions>
         </fieldDefinition>
     </fieldDefinitions> </geoEventDefinition>

I'm iterating through the file to retrieve the fieldDefinition attributes (i.e. {'name': 'id', 'type': 'String', 'cardinality': 'One'}) using the below:

from xml.etree import ElementTree as ET
tree = ET.parse(xmlFile)
root = tree.getroot()

for child in root.iter('fieldDefinition'):
    print(child.attrib)

I also need to return the name tag data (i.e. TRACK_ID) under the fieldDefinitionTag if it exists, but cannot figure out how to do so.

Any help is appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

横笛休吹塞上声 2025-01-25 20:38:55

您可以使用

import xml.etree.ElementTree as ET    
tree = ET.parse('xmlFile')
root = tree.getroot()
for child in root.iter("fieldDefinition"):
    print(child.attrib)
    for n in child.iter("name"):
        print(n.text)

它的输出,

{'cardinality': 'One', 'type': 'String', 'name': 'id'}
TRACK_ID
{'cardinality': 'One', 'type': 'Group', 'name': 'position'}
{'cardinality': 'One', 'type': 'Double', 'name': 'longitude'}
{'cardinality': 'One', 'type': 'Double', 'name': 'latitude'}

因此它输出了所有fieldDefinition s的属性。

You can use

import xml.etree.ElementTree as ET    
tree = ET.parse('xmlFile')
root = tree.getroot()
for child in root.iter("fieldDefinition"):
    print(child.attrib)
    for n in child.iter("name"):
        print(n.text)

Its output is

{'cardinality': 'One', 'type': 'String', 'name': 'id'}
TRACK_ID
{'cardinality': 'One', 'type': 'Group', 'name': 'position'}
{'cardinality': 'One', 'type': 'Double', 'name': 'longitude'}
{'cardinality': 'One', 'type': 'Double', 'name': 'latitude'}

So it outputs the attributes of all fieldDefinitions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文