Bio.Entrez.Parser模块¶
NCBI的Entrez实用程序返回的XML结果的解析器。
该解析器由Bio.Entrez中的read()函数使用,并不打算直接使用。
问题是如何将XML文件表示为Python对象。NCBI返回的一些XML文件看起来像列表,另一些看起来像字典,还有一些看起来像列表和字典的混合体。
我的方法是将XML中每个可能的元素分类为纯字符串、整数、列表、字典或结构。后者是一个字典,其中相同的键可以多次出现;在Python中,它表示为一个字典,其中该键只出现一次,指向在XML文件中找到的值列表。
然后,解析器遍历XML并为每个元素创建适当的Python对象。在Python端保留了XML中遇到的不同级别。因此,元素的子元素的子元素是存储在列表中的字典中的值,该列表是其他字典中的值(或者列表中的值本身属于作为字典中的值的列表,依此类推)。XML中遇到的属性作为字典存储在每个元素的成员.properties中,标记名保存在成员.tag中。
为了确定哪种Python对象对应于XML中的每个元素,解析器分析Entrez Utilities返回的(几乎)每个XML文件顶部引用的DTD。这比手写解决方案更可取,因为DTD的数量相当大,并且它们的内容可能会随着时间的推移而改变。该解析器中大约一半的代码用于解析DTD,另一半用于解析XML本身。
- class Bio.Entrez.Parser.NoneElement(tag, attributes, key=None)¶
基类:
object
NCBI Entrez XML元素映射为无。
- __init__(tag, attributes, key=None)¶
创建NoneElement。
- __eq__(other)¶
定义与其他无对象相等。
- __ne__(other)¶
定义不平等。
- __repr__()¶
返回对象的字符串表示形式。
- __hash__ = None¶
- class Bio.Entrez.Parser.IntegerElement(value, tag, attributes, key=None)¶
基类:
int
映射到整数的NCBI Entrez XML元素。
- static __new__(cls, value, tag, attributes, key=None)¶
创建一个IntegerElement。
- __repr__()¶
返回对象的字符串表示形式。
- class Bio.Entrez.Parser.StringElement(value, tag, attributes, key=None)¶
基类:
str
映射到字符串的NCBI Entrez XML元素。
- static __new__(cls, value, tag, attributes, key=None)¶
创建StringElement。
- __repr__()¶
返回对象的字符串表示形式。
- class Bio.Entrez.Parser.ListElement(tag, attributes, allowed_tags, key=None)¶
基类:
list
映射到列表的NCBI Entrez XML元素。
- __init__(tag, attributes, allowed_tags, key=None)¶
创建一个ListElement。
- __repr__()¶
返回对象的字符串表示形式。
- store(value)¶
将元素追加到列表中,并检查标签。
- class Bio.Entrez.Parser.DictionaryElement(tag, attrs, allowed_tags, repeated_tags=None, key=None)¶
基类:
dict
映射到字典阵列的NCBI Entrez XML元素。
- __init__(tag, attrs, allowed_tags, repeated_tags=None, key=None)¶
创建一个DictionaryElement。
- __repr__()¶
返回对象的字符串表示形式。
- store(value)¶
向字典中添加一个条目,检查标签。
- exception Bio.Entrez.Parser.NotXMLError(message)¶
基类:
ValueError
无法将文件解析为XML。
- __init__(message)¶
初始化类。
- __str__()¶
返回异常的字符串摘要。
- exception Bio.Entrez.Parser.CorruptedXMLError(message)¶
基类:
ValueError
XML已损坏。
- __init__(message)¶
初始化类。
- __str__()¶
返回异常的字符串摘要。
- exception Bio.Entrez.Parser.ValidationError(name)¶
基类:
ValueError
找到未在DTD中定义的XML标记。
如果验证解析器在XML中发现未在DTD中定义的标记,则该解析器会引发此错误。非验证解析器不会引发此错误。默认情况下,Bio.Entrez.read和Bio.Entrez.parse函数使用验证解析器(有关详细信息,请参阅这些函数)。
- __init__(name)¶
初始化类。
- __str__()¶
返回异常的字符串摘要。
- class Bio.Entrez.Parser.DataHandlerMeta(*args, **kwargs)¶
基类:
type
在Python支持@classproperty之前,需要一个元类。
- __init__(*args, **kwargs)¶
初始化类。
- property directory¶
用于缓存XSD和DTD文件的目录。
- class Bio.Entrez.Parser.DataHandler(validate, escape)¶
基类:
object
用于从Entrez解析NCBI XML的数据处理程序。
- global_dtd_dir = '/xpy/lib/python3.9/site-packages/Bio/Entrez/DTDs'¶
- global_xsd_dir = '/xpy/lib/python3.9/site-packages/Bio/Entrez/XSDs'¶
- local_dtd_dir = ''¶
- local_xsd_dir = ''¶
- __init__(validate, escape)¶
创建一个DataHandler对象。
- read(handle)¶
设置解析器并让它解析XML结果。
- parse(handle)¶
解析给定文件句柄中的XML。
- xmlDeclHandler(version, encoding, standalone)¶
在找到XML声明时设置XML处理程序。
- handleMissingDocumentDefinition(tag, attrs)¶
如果既未找到DTD也未找到XML架构,则引发异常。
- startNamespaceDeclHandler(prefix, uri)¶
处理XML命名空间声明的开始。
- endNamespaceDeclHandler(prefix)¶
处理XML命名空间声明的结尾。
- schemaHandler(name, attrs)¶
处理XML模式(在处理元素之前)。
- startElementHandler(tag, attrs)¶
处理XML元素的开始。
- startRawElementHandler(name, attrs)¶
处理XML原始元素的开始。
- startSkipElementHandler(name, attrs)¶
处理XML跳过元素的开始。
- endStringElementHandler(tag)¶
处理XML字符串元素的结尾。
- endRawElementHandler(name)¶
处理XML原始元素的开始。
- endSkipElementHandler(name)¶
处理XML跳过元素的开始。
- endErrorElementHandler(name)¶
处理XML错误元素的开始。
- endElementHandler(name)¶
处理XML元素的结尾。
- endIntegerElementHandler(tag)¶
处理XML整数元素的结尾。
- characterDataHandlerRaw(content)¶
按原样(原始)处理字符数据。
- characterDataHandlerEscape(content)¶
通过对字符数据进行编码来处理字符数据。
- skipCharacterDataHandler(content)¶
通过跳过字符数据来处理字符数据。
- parse_xsd(root)¶
解析XSD文件。
- elementDecl(name, model)¶
为DTD中的每个元素声明调用回调函数。
它用于DTD中的每个元素声明,如::
<!ELEMENT name (...)>
此函数的目的是确定此元素应被视为字符串、整数、列表、字典、结构还是错误。
- open_dtd_file(filename)¶
打开指定的DTD文件。
- open_xsd_file(filename)¶
打开指定的XSD文件。
- save_dtd_file(filename, text)¶
将DTD文件保存到缓存。
- save_xsd_file(filename, text)¶
将XSD文件保存到缓存。
- externalEntityRefHandler(context, base, systemId, publicId)¶
处理外部实体引用,以便在本地缓存DTD。
此函数的目的是在本地加载DTD,而不是从XML中指定的URL下载。使用本地DTD可以大大加快解析速度。如果在本地找不到DTD,我们会尝试下载它。如果新的DTD可从NCBI获得,则将它们放入Bio/Entrez/DTD中将允许解析器看到它们。