解析出.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
答案 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])
您的输出将达到预期。这是一个非常具体的解决方案,但是如果所有数据集都受到此问题的影响,则可能是一个解决方案。