免费注册 查看新帖 |

Chinaunix

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

求助:perl 处理xml内容 [复制链接]

论坛徽章:
0
41 [报告]
发表于 2014-02-25 16:55 |只看该作者
本帖最后由 rexuekonglong 于 2014-02-25 16:58 编辑
rexuekonglong 发表于 2014-02-25 16:21
根据上述猜想,所以我把放入了一个shell脚本中,
search.sh  脚本内容:在原login.cgi中,将perl捕获的搜索 ...

shit!
当把获取输入搜索内容语句修改为:
  1. my $z = `echo $search_word > '/var/www/tangbuild/cgi-bin/s.txt'`;
复制代码
就成功把被搜索内容输入到了 s.txt文件中,然后shell 搜索脚本,也成功被调用执行。
不过结果嘛:
s.txt:
1.xml内容:
搜索页面结果:

为啥。。。。就是和人工手动执行shell脚本不一样!!

论坛徽章:
0
42 [报告]
发表于 2014-02-26 09:05 |只看该作者
彻底把所有perl脚本,倒腾到windows下,换了一次utf-8的编码,再倒腾回linux下,搜索结果还没变。。。。

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
43 [报告]
发表于 2014-02-26 09:36 |只看该作者
{:2_172:}小伙伴们, 这
  1. my $xml  = `supose se -I repository -Q $search_word -x`;
  2. my $y    = new XML::Simple;
  3. my $data = $y->XMLin($xml);
复制代码

论坛徽章:
0
44 [报告]
发表于 2014-02-26 10:37 |只看该作者
回复 43# pitonas
结果一样,中文字符还是“???”


   

论坛徽章:
0
45 [报告]
发表于 2014-02-26 11:26 |只看该作者
回复 43# pitonas

如果加上这个 utf-8 flag on 函数,要怎么搞?

参考: http://biancheng.dnbcw.info/java/181764.html

   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
46 [报告]
发表于 2014-02-26 12:09 |只看该作者
试试这个?
  1. use Encode;

  2. my $xml      = `supose se -I repository -Q $search_word -x`;
  3. my $xml_utf8 = encode_utf8( decode( 'gbk', $xml ) );  # gbk
  4. my $y        = new XML::Simple;
  5. my $data     = $y->XMLin($xml_utf8);
复制代码

论坛徽章:
0
47 [报告]
发表于 2014-02-26 12:37 |只看该作者
回复 46# pitonas
结果依旧。

   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
48 [报告]
发表于 2014-02-26 12:49 |只看该作者
如果你贴上你所有的脚本, 图片看不清楚

论坛徽章:
0
49 [报告]
发表于 2014-02-26 13:00 |只看该作者
回复 48# pitonas


    tangbuild.7z (2.09 KB, 下载次数: 2)   这是所有的程序,是早上修改过脚本存储编码格式的

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
50 [报告]
发表于 2014-02-26 13:48 |只看该作者
test 看看
perl test.pl
test.pl:
  1. #!/usr/bin/perl -w
  2. # FOR TEST
  3. use strict;
  4. use XML::Simple;

  5. my %first;
  6. my $XML         = new XML::Simple;
  7. my $search_word = 'xyz';    # change xyz to yor search_word

  8. my $xml =
  9. `/var/www/supose/supose-0.6.2/bin/supose se -I /var/www/supose/repositroy  -Q $search_word -x`;

  10. my $data  = $XML->XMLin($xml);
  11. my @print = qw/author path filename message contents/; # edit this line
  12. my @data =
  13.   grep { !$first{ $_->{path} . $_->{filename} }++ } @{ $data->{entry} };

  14. for my $h (@data) {
  15.     print "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \n";
  16.     printf "%-20s%s\n", $_, $h->{$_} for @print;
  17.     print "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< \n";
  18.     print "\n\n";
  19. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP