Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3.xXML解析类似于plistlib?_Python_Xml_Parsing_Plist_Dictionary - Fatal编程技术网

Python3.xXML解析类似于plistlib?

Python3.xXML解析类似于plistlib?,python,xml,parsing,plist,dictionary,Python,Xml,Parsing,Plist,Dictionary,我将GPS数据存储为.tcx文件。 这是一个xml文件(请参阅下面的文件) 我知道xml.dom.minidom、etree和lxml,但我在解决如何获得与上面的plistlib模块相同的输出方面遇到了困难 我的最终目标是能够将两个数据集中选定的关键点合并在一起。一步一个脚印 编辑----------------- 我有些东西在工作: from xml.dom.minidom import parse doc = parse('/Users/name/Documents/GPS/gps.tcx'

我将GPS数据存储为.tcx文件。 这是一个xml文件(请参阅下面的文件)

我知道xml.dom.minidom、etree和lxml,但我在解决如何获得与上面的plistlib模块相同的输出方面遇到了困难

我的最终目标是能够将两个数据集中选定的关键点合并在一起。一步一个脚印

编辑-----------------

我有些东西在工作:

from xml.dom.minidom import parse
doc = parse('/Users/name/Documents/GPS/gps.tcx')
lat = doc.getElementsByTagName("LatitudeDegrees")
time = doc.getElementsByTagName("Time")

for x in lat:
    print(x.firstChild.data)

我必须将结束标记添加到您发布的XML中,以便lxml解析器能够解析它。 完成后,可以通过调用
doc.xpath
提取时间和纬度数据

import lxml.etree as ET
import io

content='''<?xml version="1.0" encoding="utf-8"?>
<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tp1="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" xmlns:gpx="http://www.topografix.com/GPX/1/1" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
    <Activities>
        <Activity Sport="Other">
            <Id>2012-01-17T11:44:35Z</Id>
            <Lap StartTime="2012-01-17T11:44:35Z">
                <TotalTimeSeconds>0</TotalTimeSeconds>
                <DistanceMeters>0</DistanceMeters>
                <Calories>0</Calories>
                <Intensity>Active</Intensity>
                <TriggerMethod>Manual</TriggerMethod>
                <Track>
                    <Trackpoint>
                        <Time>2012-01-17T11:44:35Z</Time>
                        <Position>
                            <LatitudeDegrees>59.920211518183351</LatitudeDegrees>
</Position>
</Trackpoint>
</Track>
</Lap>
</Activity>
</Activities>
</TrainingCenterDatabase>
'''

doc = ET.fromstring(content)

ns = {'ns':'http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2'}
for trackpoint in doc.xpath('//ns:Trackpoint', namespaces = ns):
    print(trackpoint.xpath('(ns:Time|ns:Position/ns:LatitudeDegrees)/text()', namespaces = ns))

输出应该是什么样子的?字符串。。。?例如,
“59.92021518183351”
2012-01-17T11:44:35Z
我看起来将要安装lxml:),很抱歉只给出xml文件的开头。我一直在考虑玩以下游戏。。。以某种方式将其放入for循环中
从xml.dom.minidom导入解析
doc=parse('/Users/name/Documents/GPS/GPS.tcx')
打印(doc.getElementsByTagName(“latitudegrees”)[1]。firstChild.data)
from xml.dom.minidom import parse
doc = parse('/Users/name/Documents/GPS/gps.tcx')
lat = doc.getElementsByTagName("LatitudeDegrees")
time = doc.getElementsByTagName("Time")

for x in lat:
    print(x.firstChild.data)
import lxml.etree as ET
import io

content='''<?xml version="1.0" encoding="utf-8"?>
<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tp1="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" xmlns:gpx="http://www.topografix.com/GPX/1/1" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
    <Activities>
        <Activity Sport="Other">
            <Id>2012-01-17T11:44:35Z</Id>
            <Lap StartTime="2012-01-17T11:44:35Z">
                <TotalTimeSeconds>0</TotalTimeSeconds>
                <DistanceMeters>0</DistanceMeters>
                <Calories>0</Calories>
                <Intensity>Active</Intensity>
                <TriggerMethod>Manual</TriggerMethod>
                <Track>
                    <Trackpoint>
                        <Time>2012-01-17T11:44:35Z</Time>
                        <Position>
                            <LatitudeDegrees>59.920211518183351</LatitudeDegrees>
</Position>
</Trackpoint>
</Track>
</Lap>
</Activity>
</Activities>
</TrainingCenterDatabase>
'''

doc = ET.fromstring(content)

ns = {'ns':'http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2'}
for trackpoint in doc.xpath('//ns:Trackpoint', namespaces = ns):
    print(trackpoint.xpath('(ns:Time|ns:Position/ns:LatitudeDegrees)/text()', namespaces = ns))
['2012-01-17T11:44:35Z', '59.920211518183351']