Python:如何为XML文档生成唯一标识符?

时间:2015-06-26 11:30:03

标签: python xml python-2.7 xslt-1.0 uuid

XSLT有一个generate-id( xml-document )函数。有了它,我可以为XML文档创建唯一标识符。

在Python中,我如何为XML文档生成唯一标识符?

注意:唯一标识符应基于XML文档的内容,而不是XML文档的文件名。例如,这个XML文档

<root>
   <comment>Hello, World</comment>
</root>

和这个XML文档

<document>
   <test>Blah, Blah</test>
</document>

必须生成不同的标识符,即使它们的文件名相同。

我有一个XML文档图。所以我需要一些方法来识别,&#34;嘿,我已经看过这个XML文档。&#34;我不想比较整个XML文档。相反,我想比较对应于XML的UUID。

3 个答案:

答案 0 :(得分:1)

一位同事给我发了答案:

  

为了将文本映射到ID,我们使用MD5作为一个哈希摘要。给   md5()函数一个XML文档(字符串),它将返回一个   32个字符的标识符。

更多详情:

genid.py

import sys
import stdio
from hashlib import md5

def digest_md5(obj):
    if type(obj) is unicode:
        obj = obj.encode('utf8')
    return md5(obj).hexdigest()

s = sys.stdin.readline()
stdio.writeln(digest_md5(s))

然后我把它变成了exe文件。

然后在DOS命令提示符下输入以下命令:

type input.txt | genid

其中input.txt为:

<Document>Hello, World</Document>

我得到了这个输出:

df6f8283335bf3f657a89733e3d36b84

美丽!

答案 1 :(得分:0)

import uuid
unique_id = uuid.uuid1()

您还可以通过

生成十六进制id或整数id
uuid.uuid1().hex    # For hexadecimal id
uuid.uuid1().int    # For integer id

答案 2 :(得分:0)

import uuid

#Create unique filename
uid = uuid.uuid1() # Generate UUID
uidstr = str(uid.int)[:21]
clientoneID = "8888"
OrderID = (clientoneID + uidstr)

#Save unique xmlfile
xmlf = open(OrderID, 'w')
xmlf.write(xmlfile)#Content of your XML file
xmlf.close