ElementTree XML-解析器,附加超链接写入标签

ElementTree XML-Parser, additional hyperlink written into tags

解析 .XML 文件的标签会提供额外的超链接。

我正在尝试读取 .mzXML 文件的数据,该文件的构建类似于普通的 .XML 文件。 打印标签为我提供了 "header".

之外的额外分类超链接

我的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

我认为你可以用 "non-canonical" 的方式解决这个问题。我尝试 运行 你的代码稍作改动(我建议你学习和使用 lxml,它比 xml 的标准 python 库更强大,如果你将使用大文件和嵌套文件你应该考虑一下):

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

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