免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5495 | 回复: 11
打印 上一主题 下一主题

[求教算法]对文件格式的检查(XML使用) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-01 16:18 |只看该作者 |倒序浏览
10可用积分
固定的文件格式:
1.使用每一行的首字符来确定这一行的有哪些内容和内容的位置,不同的位置放不同的Value(比如line10的16位到22位就是专门放日期的,而且,只要是“*****”开头的那一行,内容就必须是“*****XYZ   110   ”,各个Value的位置都不能动)。
文件格式例子
*****XYZ   110   
10   FSP10995  0807310800001254C         0
20   128   1240186136BURGANDY       8    .              712104742235   126CL20080731
20   150   1240186136BURGANDY       10   .              712104742242   149CL20080731
20   181   1240186136BURGANDY       12   .              712104742259   186CL20080731
*****XYZ   110   
10   FSP10996  0807310800001254C         0
20   128   1240186136BURGANDY       8    .              712104742235   126CL20080731
20   150   1240186136BURGANDY       10   .              712104742242   149CL20080731
20   181   1240186136BURGANDY       12   .              712104742259   186CL20080731
*****XYZ   110   
10   FSP10997  0807310800001254C         0
20   225   1240186136BURGANDY       16   .              712104742273   225CL20080731
20   183   1240186136BURGANDY       18   .              712104742280   184CL20080731
20   153   1240186136BURGANDY       20   .              712104742297   153CL20080731
  1. XML
  2. <?xml version="1.0" encoding="iso-8859-1"?>
  3. <flat>
  4.         <levels>
  5.                 <level name="*****" duplicated="append"/>
  6.                 <level name="10" duplicated="append">
  7.                         <fields>
  8.                                 <field pos="5" length="10" action="+" align='R'/>
  9.                                 <field pos="15" length="6" action="+" align='R'/>
  10.                                 <field pos="21" length="10" action="+" align='R'/>
  11.                                 <field pos="31" length="1" action="+" align='R'/>
  12.                                 <field pos="32" length="10" action="+" align='R'/>
  13.                         </fields>
  14.                 </level>
  15.                 <level name="20" duplicated="append">
  16.                         <fields>
  17.                                 <field pos="5" length="6" action="+" align='R'/>
  18.                                 <field pos="11" length="10" action="+" align='R'/>
  19.                                 <field pos="21" length="15" action="+" align='R'/>
  20.                                 <field pos="36" length="5" action="+" align='R'/>
  21.                                         <field pos="41" length="15" action="+" align='R'/>
  22.                                         <field pos="56" length="12" action="+" align='R'/>
  23.                                                                 <field pos="68" length="1" action="+" align='R'/>
  24.                                 <field pos="69" length="6" action="+" align='R'/>
  25.                                 <field pos="75" length="2" action="+" align='R'/>
  26.                                 <field pos="77" length="8" action="+" align='R'/>
  27.                         </fields>
  28.                 </level>
  29.         </levels>
  30. </flat>
复制代码

我使用model XML::Simple可以取到相应位置的值,来对相同的数据来进行合并,
但是我现在想做的是对这种类型的数据来进行格式的检查,那么我又该如何来做呢?
当然我是想借助XML,因为这个还只是最简单的格式。
我的目标是,用一种算法来破尽所有的类似格式的文件格式,到时候,我只要换XML就可以来匹配相应的数据。

[ 本帖最后由 不死草 于 2008-8-1 16:26 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-08-02 13:28 |只看该作者
各位大大,帮忙看一下哈,就是帮忙看一下有没有什么方法来实现,呵呵,没人,自己顶下先!~
20080805 哦,重新编辑2楼,偶的目标是使用XML检查上面的文件格式,文件的一些简单的格式介绍可以通过我附上的XML进行了解。
不过偶的这个简单的XML只能在合并文件的时候起作用。

[ 本帖最后由 不死草 于 2008-8-5 11:06 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-08-04 08:23 |只看该作者
刷得可真够快的,哦,自己再顶一下,大家帮帮看看,出出主意啊!~

论坛徽章:
0
4 [报告]
发表于 2008-08-04 16:38 |只看该作者
哦,就是以前两个字节为头记录的数据包格式嘛

论坛徽章:
0
5 [报告]
发表于 2008-08-04 16:39 |只看该作者
那就对每一种格式写一个正则表验证表达式就行了啊

论坛徽章:
0
6 [报告]
发表于 2008-08-04 21:47 |只看该作者

回复 #1 不死草 的帖子

说实在的,真的没有听懂要求。。

论坛徽章:
0
7 [报告]
发表于 2008-08-05 11:08 |只看该作者

回复 #4 lbaby 的帖子

呵呵,谢谢你的回复,我的目的是整个格式,包括头,line 10 and line 20.

论坛徽章:
0
8 [报告]
发表于 2008-08-05 11:11 |只看该作者

回复 #5 lbaby 的帖子

呵呵,我是想做一个专门的check program,然后只要写XML就可以检查格式的那种。
(格式不一样的File,偶就用不同的XML)

论坛徽章:
0
9 [报告]
发表于 2008-08-05 11:12 |只看该作者

回复 #6 smonkey0 的帖子

谢谢你的回复,你可以看看2楼偶的重新编辑,有看不明白的地方就请说出来,呵呵。

论坛徽章:
0
10 [报告]
发表于 2008-08-05 11:43 |只看该作者
原帖由 不死草 于 2008-8-5 11:12 发表
谢谢你的回复,你可以看看2楼偶的重新编辑,有看不明白的地方就请说出来,呵呵。

虽然仍无法完全了解楼主的需求,但说出我的想法,希望能有点帮助。我觉得可以在XML上做文章
1.可以试着加个datatype 的TAG。(如下),到时程序可以根据不同的DATATYPE来做格式检查
  1. <level name="10" duplicated="append">
  2.                         <fields>
  3.                                 <field pos="15" length="6" datatype="date" action="+" align='R'/>
  4.                         </fields>
  5.                 </level>
复制代码

2.也可以干脆加个 expr 的TAG直接存正则。到时程序可以直接调用了。
  1. <level name="10" duplicated="append">
  2.                         <fields>
  3.                                 <field pos="15" length="6" expr="/PATTERN/" action="+" align='R'/>
  4.                         </fields>
  5.                 </level>
复制代码


呃。。饿了。吃饭。。希望有用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP