我正在尝试解析由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)
答案 0 :(得分:0)
使用DTD在将其输入工作流管道之前验证输入是否正常。考虑到XML可以分段发送,它是一种保证你永远不会处理部分记录的机制(除非你真的想要)
当您处理 pull 解析器与 DOM 解析器时,差异真正发挥作用。
DTD也可用于生成智能对象'您读取的XML被转换为具有行为的对象树。这是非常先进的技术,大多数python模块都支持这种技术,但确实存在(并且该作者认为这是XML操作的优雅解决方案。 。)