[发明专利]一种基于DXF文件格式的读取与XML转换的方法无效
申请号: | 201010271291.X | 申请日: | 2010-09-02 |
公开(公告)号: | CN101944080A | 公开(公告)日: | 2011-01-12 |
发明(设计)人: | 班晓娟;龙永霞 | 申请(专利权)人: | 北京科技大学 |
主分类号: | G06F17/22 | 分类号: | G06F17/22;G06F17/50 |
代理公司: | 北京东方汇众知识产权代理事务所(普通合伙) 11296 | 代理人: | 刘淑芬 |
地址: | 100083*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 一种基于DXF文件格式的读取与XML转换的方法,涉及使用CAD工程制图的各类工程技术领域,本方法把DXF文件结构当作一种形式语言来处理,使用3型文法描述DXF文件结构,使用有限状态自动机对DXF文件内容进行识别,即顺序读入DXF文件的字符,一对组码和组值为一组,按组循环,根据读入的组码和组值,进行事件推进,状态转移以及事件处理,输出XML格式的文件,直到文件读入字符为EOF。这就进行了DXF格式到XML格式的转换。本发明能够有效的处理非标准的DXF文件,具有通用性、灵活性、可扩充性和可移植性。转换后的XML文件格式良好,结构清晰,使得用户专用软件,各类工程软件进行有效数据的提取变得十分简易,不必花费大量时间研究DXF组码和组值结构,降低了开发成本。 | ||
搜索关键词: | 一种 基于 dxf 文件格式 读取 xml 转换 方法 | ||
【主权项】:
一种基于DXF文件格式的读取与XML转换的方法,其特征在于:使用3型文法对DXF格式进行描述,使用有限状态自动机根据状态转换图对DXF文件进行解析,在事件发生,状态转移之时,进行事件处理,输出XML格式;其中DXF实体段的五元表达式为M=({ROOT,SECTION,ENTITIES,ENTITY,ENTITYPROPERTY},{(0,SECTION),(2,ENTITY),(0,*),(100,ACDB*),(0,ENDSEC)},f,ROOT,{ROOT});上面五元表达式中每个变元的具体含义如下:1){ROOT,SECTION,ENTITIES,ENTITY,ENTITYPROPERTY}代表了五个不同的状态,每一状态都作为程序中状态类的一个具体实例;ROOT为根状态,SECTION为DXF文件结构中的一个段,ENTITIES为DXF文件结构中具体的段结构,,ENTITY为具体的图元类型,ENTITYPROPERTY为子类;2){(0,SECTION),(2,ENTITY),(0,*),(100,ACDB*),(0,ENDSEC)}代表了五个不同的状态转移事件;3)f代表了状态转换函数,状态集合用Q表示,输入字符集合用∑表示,状态转换函数是QX∑到Q的映射;4)ROOT代表了整个有限状态自动机的起始状态;5){ROOT}代表了整个有限状态自动机的终态集合;实现有限状态自动机对DXF文件进行解析转换,使用相应的数据结构存储状态,事件以及状态转换函数;在事件发生之时,进行事件处理,事件处理中需要输出XML格式,因此结合XML格式有开始标签必须有结束标签的特性,利用栈的先进后出的原理,使用栈记录向子节点移动的深度,以及每一层的状态,出栈时结束标签,实现XML格式的有效性;方法步骤如下:步骤一:初始化状态集、事件集、状态转换函数集,以当前状态为开始状态ROOT;步骤二:从DXF文件读入一对组值组码,触发事件的产生;步骤三:根据当前状态和步骤二中读入的组值组码,在当前状态的状态转换函数集中找到下一状态,进行状态转移,把下一状态作为新的当前状态,并且调用事件处理类进行事件处理;步骤四:循环执行步骤二、步骤三,直到文件读入字符为EOF时,执行步骤五:步骤五:程序结束,输出XML文件;所述的状态集为状态的集合,状态包括:唯一标识名字Name;状态转换函数集nextStateTable;所述的事件集为事件的集合,事件包括组码和组值;所述的状态转换函数集为状态转换函数的集合,状态转换函数包括:下一状态名StateName,事件处理类型Type;StateName:记录下一状态;Type:type为1时,进栈,输出开始标签;type为2时,出栈,输出闭合标签;type为3时,先输出闭合标签,在输出开始标签,栈不动;type为4时,无动作;所述的事件处理:用作事件处理,决定着输出的格式;事件处理需要输入参数:组码组值,事件处理类型type,下一状态;当type=1时,从父节点状态向子节点状态转移时,子节点状态进栈,同时输出该子节点在xml文件中的开始标签,标签名为状态名字;从前列状态向后续状态移动,状态转移的同时读取组码、组值、状态名,并将这三者分别压入对应的堆栈中,同时输出该状态对应在xml文件中的开始标签,标签名为状态名字,,其中VARIABLE状态比较特别,他不会作为标签名,而是以对应该状态的组码值作为标签名;当type=2时,从子节点状态向祖先节点状态转移时,出栈,同时输出当前出栈状态在XML文件中的闭合标签;循环出栈,直到该祖先状态出栈为止;从后续状态向前列状态移动,状态转移的同时将组码、组值、状态名对应的堆栈中的信息弹出,同时输出该状态对应在xml文件中的闭合标签;当type=3时,在一个状态转移到自身时,输出前一状态的内容,再输出前一状态在XML文件中的闭合标签,再输出当前状态在XML文件中的开始标签,栈不动;在同一状态自身循环移动,状态转移的同时将前一状态对应的组码、组值、状态名对应的堆栈中的信息弹出,同时输出该子节点在xml文件中的闭合标签,再读取下一状态的组码、组值、状态名,并将这三者分别压入对应的堆栈中,同时输出该状态对应在在xml文件中的开始标签,标签名为状态名字,其中VARIABLE状态比较特别,他不会作为标签名,而是以对应该状态的组码值作为标签名。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京科技大学,未经北京科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201010271291.X/,转载请声明来源钻瓜专利网。
- 上一篇:复合文档生成装置和方法
- 下一篇:变频器操作面板的安装结构