ElementTree XML-Parser,附加超链接写入标签

时间:2019-05-21 14:57:22

标签: python xml-parsing xml.etree

解析出.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 :(得分:0)

我认为您可以以“非规范”方式解决此问题。我试图对您的代码进行一些改动(我建议您学习和使用lxml,它比xml的标准python库更强大,并且如果您要使用较大的嵌套文件,则应该考虑使用):< / p>

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])

您的输出将达到预期。这是一个非常具体的解决方案,但是如果所有数据集都受到此问题的影响,则可能是一个解决方案。