Python: 如何为 XML 文档生成唯一标识符?
Python: how to generate a unique identifier for an XML document?
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 文件的图表。所以我需要一些方法来识别,"Hey, I've already seen this XML document." 我不想比较整个 XML 文档。相反,我想比较对应于 XML 的 UUID。
import uuid
unique_id = uuid.uuid1()
您还可以通过
生成十六进制id或整数id
uuid.uuid1().hex # For hexadecimal id
uuid.uuid1().int # For integer id
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
一位同事刚刚把答案发给我:
For mapping text to an ID, we’ve used MD5 as one hash digest. Give the
md5() function an XML document (string) and it will return a
32-character identifier.
更多详情:
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
漂亮!
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 文件的图表。所以我需要一些方法来识别,"Hey, I've already seen this XML document." 我不想比较整个 XML 文档。相反,我想比较对应于 XML 的 UUID。
import uuid
unique_id = uuid.uuid1()
您还可以通过
生成十六进制id或整数iduuid.uuid1().hex # For hexadecimal id
uuid.uuid1().int # For integer id
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
一位同事刚刚把答案发给我:
For mapping text to an ID, we’ve used MD5 as one hash digest. Give the md5() function an XML document (string) and it will return a 32-character identifier.
更多详情:
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
漂亮!