免费注册 查看新帖 |

Chinaunix

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

请教PERL解析XML问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-07-16 22:32 |只看该作者 |倒序浏览
如何用XML::SAMPLE知道一个特定的标签的出现次数好比:
<ftpfields>;
        <server>;202.103.100.85</server>;
        <username>;lwen</username>;
        <password>;onlyyou</password>;
        <localfile>;/iios/zjx/perl/zlib-1.1.4.tar.gz</localfile>;
        <remotefile>;/iios/zjx/perl/zlib-1.1.4.tar.gz</remotefile>;
        <command>;GET</command>;
        <timeout>;30</timeout>;
        <poll>;60</poll>;
        <failureretests>;0</failureretests>;
        <retestinterval>;0</retestinterval>;
        <conntype>;Active</conntype>;
        <description>;FTP 202.103.100.85</description>;
        <extra />;
      </ftpfields>;
      如何知道ftpfields 出现次数

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

请教PERL解析XML问题

搜索/\<ftpfields\>;/不就知道了。     

不取内容也没必要用XML::Simple。     
如果你把xml当做普通文本来用,那就直接用reg匹配搜索就行了,不用解析。

XML::Simple, XML:arser, XML:umper都是针对XML的内容的,比如
attribute和values,也就是说控制结构,控制显示的东西,他们不太关心。     
比如现在流行的blog,rss等技术,追求的就是信息、内容共享,什么标签一律不管,内容才是他们关注的主要东西。

如果我工作中,需要得到XML文件的结构信息,也就是tag什么的,
我想我会直接通过正则来搜索。

一家之言,仅供参考:)
因为我发现,很多关于XML的帖子,实际上都接触不到XML的实质。

论坛徽章:
0
3 [报告]
发表于 2003-07-17 09:35 |只看该作者

请教PERL解析XML问题

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>;

论坛徽章:
0
4 [报告]
发表于 2003-07-17 09:42 |只看该作者

请教PERL解析XML问题

楼上的不是得到“特定的标签的出现次数”。

论坛徽章:
0
5 [报告]
发表于 2003-07-17 10:47 |只看该作者

请教PERL解析XML问题

use XML::Simple;

my $config = XMLin('c:/server.xml',forcearray =>; 1);
$rl =$config->;{ftpfields};
print scalar(@$rl);

版主说的有道理,这个只是统计同一个节点下的出现次数。要是用sax接口也许会比较方便统计个数。

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

请教PERL解析XML问题

to lgjut:
顺便问一下,Expat & GB2312的问题解决没有?
我突然想起php也是用的Expat库,而且经过试验,php处理xml中的中
文,没有什么问题,很好。

论坛徽章:
0
7 [报告]
发表于 2003-07-17 14:39 |只看该作者

请教PERL解析XML问题

xml支持中文的问题, 替换掉一个dll就可以了。如果谁需要的话,给个邮箱可以发过去。
这个bbs附件传不上去。
难得版主如此关心这个问题。

论坛徽章:
0
8 [报告]
发表于 2003-07-17 14:43 |只看该作者

请教PERL解析XML问题

如果版主愿意在perl中给出一个答案,我也很愿意学习学习。

>;我突然想起php也是用的Expat库,而且经过试验,php处理xml中的中
文,没有什么问题,很好。

论坛徽章:
0
9 [报告]
发表于 2003-07-17 15:12 |只看该作者

请教PERL解析XML问题

我真太喜欢这个论坛了,给我解决了这么多难题,如果要去google去一个一个找,怕找到头发晕,谢谢各位大虾!

论坛徽章:
0
10 [报告]
发表于 2003-07-17 15:35 |只看该作者

请教PERL解析XML问题

>;搜索/\<ftpfields\>;/不就知道了。

使用正则表达式的疑问:
http://www.w3.org/TR/REC-xml
有一个例子:
<!-- declarations for <head>; & <body>; -->;
如果在注释中出现<ftpfields>;,正则表达式怎么处理?
也许需要加判断,不统计注释行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP