×

perl解析xml文件实例

perl解析xml文件实例(perl fileparse)

admin admin 发表于2023-04-01 11:53:11 浏览60 评论0

抢沙发发表评论

本文目录一览:

【高分】使用Perl的正则表达式处理XML文档内容

(?=item).*?(?=/item)

这里使用宽度断言和勉强模式重复。

(?=item)表示匹配内容的左边满足表达式item,

(?=/item)表示匹配内容的右边满足表达式\item,

.*? 表示是勉强模式匹配(即匹配最少的内容),之所以使用勉强模式匹配是因为,如果使用贪婪模式则会出现和您的表达式出现的同样问题。但这个表达式也存在有bug,即如果出现如下的:

?xml version="1.0" encoding="UTF-8"?

rss

channel

titleTITLE/title

linkLINK/link

itemtitleT1/titlelinkL1/item/linkdescriptionD1/description/item

itemtitleT2/titlelinkL2/linkdescriptionD2/description/item

/channel

/rss

则匹配就不准确了,不过考虑到xml文档格式的严谨,应不会有这种情况出现,故就不对表达式再进行优化了。

是可以将匹配的结果读取到数组中去的,不知您使用的何种语言,故无法给出代码。

如何用perl来修改XML文件,perl::simple 模块可以读出XML中的值,但如何修改XML文件呢?

#先用XMLin读进来,

$ref=XMLin($fh)

my $template = {

Name = $ref-{Users}-{User}-{Name},

Permissions= $ref-{Users}-{User}-{Permissions},

};

$template-{Name} = 'test2';

push @{$ref-{Users}-{User}},$template;

#最后再用XMLout写出去

XMLout($ref);

如何利用Perl解析XML文件

榭梢匝≡瘢�恳桓龆贾С终�蟇eb服务的不同方面。此外,Perl的核心库包括多个支持XML的模块。

利用Perl解析XML文件

当在Perl中使用XML时,你会有将近五百个CPAN模块可以选择,每一个都支持整合Web服务的不同方面。此外,Perl的核心库包括多个支持XML的模块。这篇文章就关注于一个最早期且涉及最频繁的核心模块:XML::Parser.-perl解析xml文件实例

XML::解析器系列

最初的Perl解析器XML::Parser::Expat由LarryWall在几年前编写并由ClarkCooper保持延续。模块作为ExpatXMLparser的界面由JamesClark用C语言编写且已经被一些脚本语言所采用。-perl解析xml文件实例

Perl解析XML文件中Expat是一个以事件为基础的解析器,意味着特定条件触发处理功能。例如,一个开始或结尾标记将触发适当的用户定义子程序。XML::Parser模块在Expat功能的基础上为普通应用所建构。-perl解析xml文件实例

注意Expat在解析之前不会使XML生效且在遇到错误出现时会失效。这些限制会使XML::Parser模块速度非常之快。

XML::Parser简介

任何人都可以在Perl中编写一个XML解析器。毕竟你只是处理具有已知格式的文本。但由于XML::Parser模块是用C编写的,他比任何你可以实现的纯Perl应用要更有效的多。而且既然他已经被编写出来,你就可以把时间花在其他更有用的事情上。-perl解析xml文件实例

XML::Parser的Expat的功能允许你定义所使用的解析器的样式。最普遍使用的样式是Tree和Stream,Tree处理XML的输入,创建含有文件中的元素和数据的成套数组,这样你就可以按照你的意愿控制这个结构。Stream将分析行为划分层级,在一个事件的开始做处理,要使用Stream,你必须在你对模块做例示并将其与描述事件出现时如何处理的子程序相关联时定义处理器。-perl解析xml文件实例

其它样式还包括:Sub,允许你特定地对一种XML标记定义其功能。Debug,将文件显示未标准输出。Object,与Tree相似但是返回对象。小结

perl XML::Simple不能解析xml,菜鸟求助

粘贴一下你的XML文件内容看看,报错信息是说XML文件格式不对。

补充:

没说你的PERL代码出错,说project.xml文件不是标准的XML格式。

补充:

你删除xml文件的第一行试试看:

?xml version="1.0" encoding="utf-8"?

perl取文本中的内容问题

我用一个xml文件作例子,我会把这个文件中author和/author之间的内容取出来。

使用..运算符,实现这个需求只需要一行代码。

输入文件inputFile内容如下:

?xml version="1.0" encoding="UTF-8"?

catalog !--An XML Catalog-- ?target instruction?

journal title="XML Zone" publisher="IBM developerWorks"

article level="Intermediate" date="December-2001"

titleJava configuration with XML Schema/title

author

firstnameMarcello/firstname

lastnameVitaletti/lastname

/author

/article

/journal

/catalog

---------------------------------------------------------------------------------------------------------------------------------perl解析xml文件实例

脚本如下:

#!/bin/perl -w

use strict;

#下面是定义输入输出文件的读写

my $inputFile = "./inputFile";

my $outputFile = "./outputFile";

open FD_IN,$inputFile or die "open $inputFile error! $!";

open FD_OUT,"$outputFile" or die "open $outputFile error! $!";

while(FD_IN)

{

if( /\author\/../\\/author\/ ) #你问的问题在这里解决,用了运算符 ..

{

print FD_OUT $_;

}

}

close FD_IN;

close FD_OUT;

------------------------------------------------------------------------------------------------------perl解析xml文件实例

输出结果:

author

firstnameMarcello/firstname

lastnameVitaletti/lastname

/author