免费注册 查看新帖 |

Chinaunix

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

还是老xml问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-07-17 16:42 |只看该作者 |倒序浏览
use XML::Simple;

my $config = XMLin('c:/server.xml',forcearray =>; 1); # load the file
$rh =$config->;{server};
print scalar(keys (%$rh));



<config logdir="/var/log/foo/" debugfile="/tmp/foo.debug">;
<server name="sahara" osname="solaris" osversion="2.6">;
<address>;10.0.0.101</address>;
<address>;10.0.1.101</address>;
</server>;
<server name="gobi" osname="irix" osversion="6.5">;
<address>;10.0.0.102</address>;
</server>;
<server name="kalahari" osname="linux" osversion="2.0.34">;
<address>;10.0.0.103</address>;
<address>;10.0.1.103</address>;
</server>;
</config>;
我试验了这个例子,再您列的这个xml工作得很好,那是应为您的server是在第一级的,但我的<ftpfields>;是在这个xml的后面好多级去了,所以怎么也不对,,,请问如何处理
好比:
use XML::Simple;
use Data:umper;
my $config = XMLin('./IIOS.xml',forcearray =>;1); # load the file
$rh =$config->;{http}->;{httpelement};
#$rh =$config->;{contact};
#print Dumper $rh;
print scalar(keys (%$rh));
就显示0请问这样的问题怎么处理,用cat我也想过,但在这个xml中间出现这些关键词太多了,而且用户还可能输入这样的关键词,我无法区别,请问这样的问题如何处理,谢谢各位大侠

论坛徽章:
0
2 [报告]
发表于 2003-07-17 20:45 |只看该作者

还是老xml问题

使用sax接口统计,比如说<address>;出现次数。


use XML:arser:erlSAX;

my $my_handler = MyHandler->;new;
my $parser = XML:arser:erlSAX->;new( Handler =>; $my_handler );
my $instance = 'c:/server.xml';
$parser->;parse(Source =>; { SystemId =>; $instance });
print $my_handler->;{'count'} ;

1;

package MyHandler;

sub new {
        my ($type) = @_;
        my $self = bless{} , $type;
        $self->;{'count'} = 0;
        return $self ;
}

sub start_element {
        my ($self, $element) = @_;
        $self->;{'count'}= $self->;{'count'}+1 if ($element->;{Name} eq 'address')        ;

        print "Start element: $element->;{Name}\n";
}

sub end_element {
        my ($self, $element) = @_;

        #~ print "End element: $element->;{Name}\n";
}

1;

XML:arser:erlSAX 在 libxml-perl中有。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP