各位大神,有谁用过perl 打开文件解析XML文件

新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 14, 距离下一级还需 186 积分
论坛徽章:0
XML 文件如下:
&?xml version=&1.0& encoding=&UTF-8&?&
&resource-data xmlnssi=&http://www.w3.org/2001/XMLSchema-instance& xsi:noNamespaceSchemaLocation=&resource-data.xsd&&
&&&class name=&AP&&
& & &attributes&
& && &&resourceId&0&/resourceId&
& && &&lastModifyTime&42&/lastModifyTime&
& && &&dcTime&18&/dcTime&
& && &&attribute name=&IN_FLOOR& value=&eeeee& /&& &
& && &&attribute name=&IN_FLOOR2& value=&dddddd&/&
& & &/attributes&
&attributes&
& && &&resourceId&0&/resourceId&
& && &&lastModifyTime&42&/lastModifyTime&
& && &&dcTime&18&/dcTime&
& && &&attribute name=&IN_FLOOR& value=&aaa& /&& &
& && &&attribute name=&IN_FLOOR2& value=&aaa&/&
& & &/attributes&
&&&/class&
&/resource-data&
perl&&程序:
& &my $file=&d:\\aa.xml&;
& & my $config=XMLin($file) ;
& & my $count=0;
& & my $file_data=&d:\\tb_ab.txt&;
& & my $data=$file_
& & open IN,&&$file_data&;
& &&&while($config-&{&class&}-&{&attributes&}-&[$count])
& && && & print IN&&encode(&gbk&,@{$config-&{&class&}-&{&attributes&}}[$count]-&{&lastModifyTime&} . &\t"
& && && & print IN&&encode(&gbk&,@{$config-&{&class&}-&{&attributes&}}[$count]-&{&attribute&}{&IN_FLOOR&}{&value&} . &\t"& &
& && && & print IN&&encode(&gbk&,@{$config-&{&class&}-&{&attributes&}}[$count]-&{&attribute&}{&IN_FLOOR2&}{&value&} . &\t"& &&&
& && && & $count++;
& && & close(IN);
以前文件七八十M的时候还可以解析出来,现在文件二百M的时候,就报内存溢出了。
论坛徽章:46
这XML全放内存里比原文件放大个十倍一百倍的不成问题啊,你没看以前 80M 的时候占多少内存?
稍有积蓄, 积分 314, 距离下一级还需 186 积分
论坛徽章:0
用xml::twig
论坛徽章:1
xml::simple就是这样
DOM方式用XML::LibXML,SAX方式用XML::SAX::ExpatXS
白手起家, 积分 14, 距离下一级还需 186 积分
论坛徽章:0
我去CPAN上查看过了,没太看懂。不好意思,刚学perl没多久。
论坛徽章:1
尽量用DOM方式,DOM效率比SAX要高上数量级,内存换时间。SAX主要是做XML流处理和内存不够的场合。
你现在不见得是内存不够,xml::simple把结构整个读到哈希里,它适合处理简单的体积小的xml结构。批量的xml操作不能用这个模块
白手起家, 积分 14, 距离下一级还需 186 积分
论坛徽章:0
& &&&我用XML::LibXML 采到数据了,虽然不报内存错误了,可还是很慢很慢.采集200M的文件大概要半个小时才能转成我要的格式。以前160M用simple ,也只用五六分钟。
论坛徽章:1
白手起家, 积分 14, 距离下一级还需 186 积分
论坛徽章:0
#!/usr/bin/perl
use XML::LibXML;
$parser = new XML::LibXML;
$struct = $parser -& parse_file(&d:/AP_.xml"
my $file_data=&d:\\tb_ap.txt&;
open IN,&&$file_data&;
$rootel = $struct -& getDocumentElement();
$elname = $rootel -& getName();
@kids = $rootel -&getElementsByTagName('attributes');
foreach $child(@kids) {
& && &&&@atts = $child-&getElementsByTagName('attribute');
& && &&&foreach $at (@atts) {
& && && && && & $na = $at -& getAttribute('name');
& && && && && & $va = $at -& getAttribute('value');
& && && && && & print IN encode(&gbk&,&$va\t"
& && && && && & }
& && &&&print IN encode(&gbk&,&\n"
close(IN);
论坛徽章:1
这样速度肯定会慢
用$doc-&findvalue($xpath)取值
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处10被浏览1,078分享邀请回答67 条评论分享收藏感谢收起0添加评论分享收藏感谢收起写回答使用perl解析xml文档_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
使用perl解析xml文档
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢perl处理xml的模块介绍
转载 & & 作者:
perl处理xml的模块介绍,需要的朋友可以参考下
1. 查找已有的模块
2. 输入XML查询,选择评价较高的,且可以满足自己需求的模块:XML::Simpleuse XML::Suse Data::D
#将XML文件转化为Hash结果
代码如下:my $xml=XMLin('abstract_sample.xml');open(HASH,'&&XML_hash')||die"can not open the file: $!";print HASH Dumper($xml);
#想访问XML某个节点的值,需要根据XML定义路径获取&
代码如下:print $xml-&{PubmedArticle}-&{MedlineCitation}-&{PMID};#可以将XML转化为的Hash结构重新转换为XML输出,但是需要注意转化后的XML可能和原始的XML文件外表不同了 代码如下:$MeSH_XML=XMLout($xml-&{PubmedArticle}-&{MedlineCitation}-&{MeshHeadingList});print $MeSH_XML;
更多使用参看:
XML::Smart
my $xml=XML::Smart-&new('abstract_sample.xml');
更多使用参考:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Perl 是一种高级、通用、直译式、动态的程序语言。关注话题分享阅读全文1.4K27 条评论分享收藏感谢regexper.com/ 对于理解别人源码里的(或者自己的,哈哈)复杂正则很有帮助: 阅读全文59922 条评论分享收藏感谢阅读全文15118 条评论分享收藏感谢阅读全文8719 条评论分享收藏感谢阅读全文749 条评论分享收藏感谢4,068}

我要回帖

更多关于 perl写入文件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信