我正在使用lxml创建XML输出的Python中工作,最终项目将需要将xml导入Strava,因此在导入之前需要正确的模式。下面是我创建的模式,我的问题是,如果我包含如下所示的XMLNS文本,我似乎无法正确设置格式。
<Extensions>
<TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
<Speed>0.0</Speed>
</TPX>
</Extensions>
到目前为止,我的代码是:
def Trackpoint():
E = lxml.builder.ElementMaker()
Trackpoint = E.Trackpoint
Time = E.Time
Postion = E.Postion
LatitudeDegrees = E.LatitudeDegrees
LongitudeDegrees = E.LongitudeDegrees
AltitudeMeters = E.AltitudeMeters
DistanceMeters = E.DistanceMeters
Cadence = E.Cadence
Extensions = E.Extensions
TPX = E.TPX
Speed = E.Speed
the_doc = Trackpoint(
Time('2017-11-23T20:44:33Z'),
Postion(
LatitudeDegrees('32.2996560'),
LongitudeDegrees('-64.7868500'),
),
AltitudeMeters('16.4'),
DistanceMeters('0.0'),
Cadence('0'),
Extensions(
TPX(
Speed('0.0'),
)
)
)
print lxml.etree.tostring(the_doc, pretty_print=True)
这是当前输出:
<Trackpoint>
<Time>2017-11-23T20:44:33Z</Time>
<Postion>
<LatitudeDegrees>32.2996560</LatitudeDegrees>
<LongitudeDegrees>-64.7868500</LongitudeDegrees>
</Postion>
<AltitudeMeters>16.4</AltitudeMeters>
<DistanceMeters>0.0</DistanceMeters>
<Cadence>0</Cadence>
<Extensions>
<TPX>
<Speed>0.0</Speed>
</TPX>
</Extensions>
</Trackpoint>
python参考方案
您可以在ElementMaker中指定名称空间。您还可以在nsmap(命名空间映射)中使用None
使其不加前缀。
例...
from lxml import etree, builder
def Trackpoint():
E = builder.ElementMaker()
AE_E = builder.ElementMaker(namespace="http://www.garmin.com/xmlschemas/ActivityExtension/v2",
nsmap={None: "http://www.garmin.com/xmlschemas/ActivityExtension/v2"})
Trackpoint = E.Trackpoint
Time = E.Time
Postion = E.Postion
LatitudeDegrees = E.LatitudeDegrees
LongitudeDegrees = E.LongitudeDegrees
AltitudeMeters = E.AltitudeMeters
DistanceMeters = E.DistanceMeters
Cadence = E.Cadence
Extensions = E.Extensions
TPX = AE_E.TPX
Speed = AE_E.Speed
the_doc = Trackpoint(
Time('2017-11-23T20:44:33Z'),
Postion(
LatitudeDegrees('32.2996560'),
LongitudeDegrees('-64.7868500'),
),
AltitudeMeters('16.4'),
DistanceMeters('0.0'),
Cadence('0'),
Extensions(
TPX(
Speed('0.0'),
)
)
)
print etree.tostring(the_doc, pretty_print=True)
Trackpoint()
输出...
<Trackpoint>
<Time>2017-11-23T20:44:33Z</Time>
<Postion>
<LatitudeDegrees>32.2996560</LatitudeDegrees>
<LongitudeDegrees>-64.7868500</LongitudeDegrees>
</Postion>
<AltitudeMeters>16.4</AltitudeMeters>
<DistanceMeters>0.0</DistanceMeters>
<Cadence>0</Cadence>
<Extensions>
<TPX xmlns="http://www.garmin.com/xmlschemas/ActivityExtension/v2">
<Speed>0.0</Speed>
</TPX>
<Speed>test</Speed>
</Extensions>
</Trackpoint>
Python pytz时区函数返回的时区为9分钟 - python由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…
Python numpy数据指针地址无需更改即可更改 - python编辑经过一些摆弄之后,到目前为止,我已经隔离了以下状态:一维数组在直接输入变量时提供两个不同的地址,而在使用print()时仅提供一个地址2D数组(或矩阵)在直接输入变量时提供三个不同的地址,在使用print()时提供两个地址3D数组在直接输入变量时提供两个不同的地址,而在使用print()时仅给出一个(显然与一维数组相同)像这样:>>> …
re.findall不返回全场比赛吗? - python我有一个包含一堆字符串的文件,例如“ size = XXX;”。我第一次尝试使用python的re模块,并且对以下行为感到有些困惑:如果我在正则表达式中使用管道作为“或”,我只会看到返回的匹配项。例如。:>>> myfile = open('testfile.txt','r').read() >…
Spacy如何将标记标签整体化? - python在包含#标签(例如tweet)的句子中,spacy的令牌生成器将标签分为两个令牌:import spacy nlp = spacy.load('en') doc = nlp(u'This is a #sentence.') [t for t in doc] 输出:[This, is, a, #, sentence, .…
R'relaimpo'软件包的Python端口 - python我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。