我正在尝试解析由Google托管的USPTO大容量文件。在这过程中,我浏览了DTD文件。经过一些研究,我了解到这些文件基本上定义了模式,并可以根据这些定义来确定xml是否有效。我不明白这些文件是如何帮助我解析文件的。我看过几篇博文(1,2)和this paper关于人们是如何使用它们的,但我不知道如何使用它们或为什么。在
我目前的解析方法只是使用Beautiful Soup来查找标记,但是如果有更好/更有效的方法,我希望这样做。在
下面是我当前方法的一个小例子:
def getRefInfo(ref):
data = {}
data["Country"] = ref.find("country").text
data["Date"] = ref.find("date").text
data["ID"] = ref.find("doc-number").text
return data
soup = BeautifulSoup(xml, 'lxml')
bibData= soup.find("us-bibliographic-data-grant")
ref = bibData.find("publication-reference")
if ref != None:
print getRefInfo(ref)
在将输入发送到工作流管道之前,可以使用dtd验证输入是否正确。考虑到XML可以以片段的形式发送,这是一种保证您永远不会处理部分记录的机制(除非您真的想这样做)
当您处理pull解析器与DOM解析器时,这种差异就真正发挥了作用。在
DTD还可用于生成“智能对象”,在这种情况下,您读取的XML将转换为具有行为的对象树。。这是一种非常高级的技术,大多数python模块都不支持它,但它确实存在(作者认为它是一种优雅的XML操作解决方案)
相关问题 更多 >
编程相关推荐