Im正在开发一个数据包检索系统,该系统将获取一个包,并基于标签系统(类似于HTML标记)处理数据包的各个部分。 [仅限基于文本的文件,无二进制文件]。在
包的每个部分都包含在两个相同的标记之间,下面是一个示例包:
"<PACKET><HEAD><ID><ID><SEQ><SEQ><FILENAME><FILENAME><HEAD><DATA><DATA><PACKET>"
整个包包含在<PACKET><PACKET>
标记中。
所有元数据都包含在<HEAD><HEAD>
标记中,包所属的文件名包含在<FILENAME><FILENAME>
标记中。在
例如,假设一个包被接收并存储在一个名为sTemp的临时字符串变量中。
例如,如何有效地检索一对标记的内容,例如<FILENAME><FILENAME>
标记的内容?在
我希望有这样的功能,比如说getTagFILENAME(packetX),它将返回包的<FILENAME><FILENAME>
标记的文本字符串内容。
使用Python是否可以做到这一点?在
如有任何建议或意见。在
像这样?在
正如mjv所指出的,如果您只使用XML,那么发明一种类似XML的格式就毫无意义了。在
但是:如果要使用XML作为数据包格式,则必须真正使用XML。您应该使用XML库来创建您的包,而不仅仅是解析它们。否则,当您的某个字段值第一次包含XML标记字符时,您将陷入困境。在
当然,您可以编写自己的代码来进行必要的转义、过滤非法字符、保证格式良好等等。对于这样简单的格式,这可能就是您需要做的全部。但是,沿着这条路走下去是一种学习XML的方法,您可能不想学习这些东西。在
如果使用XML库创建数据包是个问题,那么最好定义一个自定义格式(我定义一个与XML完全不同的格式,以防止人们产生想法),并使用
pyparsing
为其构建一个解析器。在如果数据包格式有效地使用了XML格式的语法(例如,如果“结束标记”实际上包含斜杠),则可以使用xml.etree.ElementTree。
这个库是Python标准库的一部分,从Py2.5开始。我发现处理这种数据非常方便。它提供了许多读取和修改这种树结构的方法。由于XML语言的通用性和ElementTree库中内置的XML意识,包语法可以很容易地演化,例如支持重复元素、元素属性。在
示例:
相关问题 更多 >
编程相关推荐