URL во всех тегах элемента XML - PullRequest
0 голосов
/ 15 апреля 2019

Я использую пакет cElementTree в Python и испытываю проблемы с тегами элемента.Они включают атрибут в самом теге.Кажется, проблема с парсером.Пожалуйста, просмотрите код ниже:

from xml.etree import cElementTree as ET
path='C:\\Users\\myusername\\Desktop\\test.xml'
tree=ET.parse(path)
root=tree.getroot()

root.tag
>>> '{http://www.aftmark.org}DATA'

Где xml похож на это:

<DATA xmlns:xsd="http://www.w.org/2008/XMLsca" xmlns="http://www.aftmark.org">
  <Header>
    <DATAVersion>6.5</DATAVersion>
  </Header>
  <Items>
    <Item MaintenanceType="A">
      <HazardousMaterialCode>N</HazardousMaterialCode>
      <ExtendedInformation>
    </Item>

Есть идеи, почему указан URL '{http://www.aftmark.org}'?Я анализирую много файлов, и этот URL-адрес изменяется.Тем не менее, тег DATA этого не делает.(Резервное копирование - использовать root.tag, взять этот URL и добавить его ко всем ET.find () позже). Спасибо!

1 Ответ

1 голос
/ 16 апреля 2019

Это потому, что DATA (и все его потомки) находятся в пространстве имен по умолчанию http://www.aftmark.org.

То, что вы видите, - это пространство имен uri и расширенное локальное имя (также известное как Clark Notation).

См. Здесь для получения дополнительной информации о пространствах имен в ElementTree.

См. Здесь для получения дополнительной информации о пространствах имен XML в целом.

Кроме того, см. Этот ответ для другого способа захвата неизвестных пространств имен для использования в find / findall.

...