как использовать минидом для правильного разбора xml - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь создать бота Discord в Python, который будет возвращать информацию о прибытии автобусов.Я использую API-интерфейс nextbus https://www.nextbus.com/xmlFeedDocs/NextBusXMLFeed.pdf, который обеспечивает xml-фид.
Поскольку время прибытия автобусов постоянно обновляется, я не могу загрузить файл, но вместо этого каждый раз, когда приходит запрос от пользователя, мне нужно посмотреть напоследние данные.Я посмотрел на xml.etree.ElementTree , но в моей ситуации это не работает (по крайней мере, я не могу заставить его работать).Вместо этого я использую xml.dom.minidom .Это работает не так хорошо, как ElementTree.Поскольку я не могу сказать, что будет в ленте, пока к нему не будет получен доступ, трудно использовать dom.getElementByTagName('tag name').Это связано с тем, что если конкретная шина в настоящий момент не работает, xml-прогноз изменяется из-за наличия элемента прогнозирования в тег dirTitleBecauseNoPrediction.Вот как выглядит xml, если ни одна шина не работает.

<body copyright="redacted">
        <predictions agencyTitle="redacted" routeTitle="redacted" routeTag="redacted" stopTitle="redacted" stopTag="recacted" dirTitleBecauseNoPredictions="To redacted"></predictions>
</body>

Когда шина работает, она выглядит так:

<body copyright="redacted">
   <predictions agencyTitle="redacted" routeTitle="redacted" routeTag="redacted" stopTitle="redacted" stopTag="redacted">
       <direction title="redacted">
              <prediction epochTime="1546570037272" seconds="1228" minutes="20" isDeparture="false" affectedByLayover="true" dirTag="redacted" vehicle="redacted" block="redacted"/>
              <prediction epochTime="1546572437272" seconds="3628" minutes="60" isDeparture="false" affectedByLayover="true" dirTag="redacted" vehicle="redacted" block="redacted"/>
       </direction>
    </predictions>
</body>

Я бы хотел иметь возможностьпроанализируйте файл и посмотрите, что присутствует, чтобы можно было принять решение относительно того, какую информацию предоставить пользователю.
Я новичок в doms и xml в целом.Мы будем благодарны за любую информацию о том, какие руководства будут полезны.Кроме того, какая библиотека или как эффективнее использовать минидом была бы признательна.Я попробовал Google, но без особого успеха.Я начинаю думать, что Python - не лучший язык для этого проекта. В любом случае, спасибо заранее.

...