免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: niaya
打印 上一主题 下一主题

问个关于Html标签整理的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-02-12 10:17 |显示全部楼层
关于这段代码,还有最后两个问题。

第一是健壮性问题,并不是每一段都一定有<span face=XXX><span class=XXX><span lang=XXX>这样的TAG。这个时候导致my @content = $p->content_list;这行代码时返回一个空列表。导致程序编译出错。
尝试着向下面这样改,依然提示编译出错。


  1. my $encode = "GBK";
  2. my $h = HTML::TreeBuilder->new_from_content( decode($encode, $s) );
  3.        
  4. for my $p ($h->look_down(_tag => q{p}) ) {
  5.    
  6.     for my $span( $h->look_down(_tag => q{span}) ) {
  7.         if ( defined $span->attr('lang') ) {
  8.             $span->attr(lang=>undef);
  9.             $mainspan = $span;   
  10.               last;  
  11.             } else {
  12.                     $span = "";
  13.                     }
  14.         }
  15.    
  16.     for my $span( $h->look_down(_tag => q{span}) ) {
  17.            
  18.     if ( $span == "" ) {
  19.             last;
  20.             } else {
  21.             $span->replace_with_content($span->content_refs_list);
  22.             
  23.             my @content = $p->content_list;
  24.             $p->detach_content();
  25.             
  26.             $mainspan->push_content(@content);

  27.           $p->push_content($mainspan);
  28.         }
  29.       }   
  30.         }

  31.         $s = encode( $encode, $h->as_HTML('<>&',' ',{}) ), "\n";
复制代码



第二个问题是,目前对于多段的处理还是有问题。只有最后一段的处理是完全正确的。

比如,原始代码:


  1. <body>

  2. <p style='margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:.0pt; '><span face=Arial><span class=GramE><span class=grame><span lang=EN-US style='font-size:10.0pt; font-family:Arial'><b> AAAAA </b><span face=Arial>BBBBB</span></b><span face=Arial>CCCCC </span><b><span face=Arial> AAAA</span></b><span face=Arial>DDDDD</span><span
  3. face=Arial><span style="mso-spacerun:yes">EEEEE</span></span><span face=Arial>FFFFF</span>
  4. <span face=Arial>GGGGG</span><o:p></o:p></span></span></span></span></p>

  5. <p style='margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:.0pt; '><span face=Arial><span class=GramE><span class=grame><span lang=EN-US style='font-size:10.0pt; font-family:Arial'><b> AAAAA </b><span face=Arial>BBBBB</span></b><span face=Arial>CCCCC </span><b><span face=Arial> AAAA</span></b><span face=Arial>DDDDD</span><span
  6. face=Arial><span style="mso-spacerun:yes">EEEEE</span></span><span face=Arial>FFFFF</span>
  7. <span face=Arial>GGGGG</span><o:p></o:p></span></span></span></span></p>
  8.        
  9. <p style='margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:.0pt; '><span face=Arial><span class=GramE><span class=grame><span lang=EN-US style='font-size:10.0pt; font-family:Arial'><b> AAAAA </b><span face=Arial>BBBBB</span></b><span face=Arial>CCCCC </span><b><span face=Arial> AAAA</span></b><span face=Arial>DDDDD</span><span
  10. face=Arial><span style="mso-spacerun:yes">EEEEE</span></span><span face=Arial>FFFFF</span>
  11. <span face=Arial>GGGGG</span><o:p></o:p></span></span></span></span></p>

  12. </body>
复制代码


修正后代码


  1. <body>
  2.    <p style="margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:.0pt; "><b> AAAAA </b>BBBBBCCCCC <b> AAAA</b>DDDDDEEEEEFFFFF GGGGG</p>
  3.    <p style="margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:.0pt; "><b> AAAAA </b>BBBBBCCCCC <b> AAAA</b>DDDDDEEEEEFFFFF GGGGG</p>
  4.    <p style="margin-top:0pt;margin-right:0pt;margin-bottom:0pt;margin-left:.0pt; "><span style="font-size:10.0pt; font-family:Arial"><b> AAAAA </b>BBBBBCCCCC <b> AAAA</b>DDDDDEEEEEFFFFF GGGGG</span></p>
  5. </body>
复制代码


前两段的<span style="font-size:10.0pt; font-family:Arial">这个TAG都已经被删掉了。
小弟驽钝,百思不得其解,求赐教。

论坛徽章:
0
12 [报告]
发表于 2009-02-13 09:50 |显示全部楼层
在部分的html已经通过了,还有一些琐碎的问题需要调查。
等我整理好之后再次发新贴询问,还请各位多多帮忙。
在这里感谢ynchnluiti的大力帮助,也感谢所有回帖的朋友们。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP