Я пытаюсь разобрать Jenkin's рабочие файлы XML, используя модуль lxml для Python. Это выглядит следующим образом:Python: Как вы используете lxml для разбора тэгов xml с периодами?
<triggers>
<hudson.triggers.TimerTrigger>
<spec>H H(6-21)/3 * * *</spec>
</hudson.triggers.TimerTrigger>
Мне нравится использовать удобный объективизации модуль LXML, но он запутывается, когда я пытаюсь сделать это:
root.triggers.hudson.triggers.TimerTrigger.spec = 'something'
я получаю AttributeError: no such child: hudson
. Конечно, нет атрибута hudson! Как работать с дурацкой частью XML?
Для дополнительного контекста, вот мой код:
from lxml import objectify
import jenkins
j = jenkins.Jenkins('http://local.jenkins.instance')
xml = j.get_job_config('job_name')
root = objectify.fromstring(xml)
root.triggers.hudson.triggers.TimerTrigger.spec = 'something'
только предположение, но, возможно, придется использовать 'etree' вместо этого. – MattDMo
Это слишком плохо, поскольку мне очень нравится, как чистое объективирование делает вещи. Я заметил, что могу сделать «root.triggers.getchildren() [0] .spec = period', но это казалось взломом. –
Если это работает, используйте его. Я считаю использование XPath столь же простым, как объективирование, и оно работает со сложными тегами, содержащими периоды и двоеточия, но для каждого из них. – MattDMo