Файл XML выглядит так:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MINiML
xmlns="http://www.ncbi.nlm.nih.gov/geo/info/MINiML"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.ncbi.nlm.nih.gov/geo/info/MINiML http://www.ncbi.nlm.nih.gov/geo/info/MINiML.xsd"
version="0.5.0" >
<Contributor iid="contrib1">
<Person><First>ENCODE</First><Last>DCC</Last></Person>
<Email>[email protected]</Email>
<Organization>ENCODE DCC</Organization>
<Address>
<Line>300 Pasteur Dr</Line>
<City>Stanford</City>
<State>CA</State>
<Zip-Code>94305-5120</Zip-Code>
<Country>USA</Country>
</Address>
</Contributor>
</MINiML>
Вот как я использую ElementTree
в Python:
import xml.etree.cElementTree as ET
tree=ET.parse("the_file_above.xml")
root = tree.getroot()
for c in root:
print c.tag, c.attrib
Он возвращает:
{http://www.ncbi.nlm.nih.gov/geo/info/MINiML}Contributor {'iid': 'contrib1'}
И значение c.tag
- это '{http://www.ncbi.nlm.nih.gov/geo/info/MINiML}Contributor'
, который я ожидал стать Contributor
. Я не знаю, как длинный URL-адрес смешивался в теге. У кого-нибудь есть идеи об этом?
Эта библиотека (как и другие) пытается кодировать пространство имен, используемое в именах тегов. Это делается путем добавления пространства имен в фигурные скобки. Таким образом, это просто функция, о которой вы, возможно, не знаете, и которая может быть громоздкой для вас. Но это необходимо, если вы смешиваете XML файлы из разных источников с различными пространствами имен, в которых в противном случае конфликтуют имена тегов.