ElementTree XML-Parser, дополнительная гиперссылка, записанная в теги - PullRequest
0 голосов
/ 21 мая 2019

Анализ тегов файла .XML дает дополнительную гиперссылку.

Я пытаюсь прочитать данные файла .mzXML, который построен как обычный файл .XML. Распечатка тегов дает мне дополнительную гиперссылку с классификацией, указанной выше в «заголовке».

мой файл mzXML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<mzXML xmlns="http://sashimi.sourceforge.net/schema_revision/mzXML_2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://sashimi.sourceforge.net/schema_revision/mzXML_2.1 http://sashimi.sourceforge.net/schema_revision/mzXML_2.1/mzXML_idx_2.1.xsd">
<msRun scanCount="1">

мой код Python:

import xml.etree.cElementTree as ET

tree = ET.parse('data.mzXML')
root = tree.getroot()

print(root[0].tag)

ожидаемый результат -

msRun

фактический вывод

{http://sashimi.sourceforge.net/schema_revision/mzXML_2.1}msRun

1 Ответ

0 голосов
/ 21 мая 2019

Я думаю, что вы можете решить эту проблему "неканоническим" способом. Я попытался запустить ваш код с небольшими изменениями (я предлагаю вам изучить и использовать lxml, он более мощный, чем стандартная библиотека python для xml, и если вы собираетесь использовать большие и вложенные файлы, вы должны учитывать это):

from lxml import etree as ET

tree = ET.parse('data.mzXML')
root = tree.getroot()

print(root[0])

Результат был

<Element {http://sashimi.sourceforge.net/schema_revision/mzXML_2.1}msRun at 0x7ff99afa9e88>

Итак, полный тег вашего файла, как и ожидалось, {http://sashimi.sourceforge.net/schema_revision/mzXML_2.1}msRun. Если эта проблема повторяется в наборе данных, вы можете использовать следующий код:

from lxml import etree as ET

tree = ET.parse('data.mzXML')
root = tree.getroot()
tag = root[0].tag.split('}')

print(tag[1])

И ваш вывод будет таким, как ожидалось. Это очень конкретное решение, но если эта проблема затрагивает весь набор данных, это может быть решение.

...