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