如何为以下字符串编写正则表达式。 “ShortCaption”和“Headline”中的所有内容都需要被提取出来吗?
<xs:element name ="ID" type ="xs:int" minOccurs ="1" maxOccurs ="1"/>
<xs:element name ="Type" type ="xs:string" minOccurs ="1" maxOccurs ="1"/>
<xs:element name ="Language" type ="xs:string" minOccurs ="0" maxOccurs ="1"/>
<xs:element name="LinkText" type ="xs:string" minOccurs ="0" maxOccurs ="1"/>
<xs:element name="Headline" type ="xs:string" minOccurs ="0" maxOccurs ="1"/>
<xs:element name="ShortCaption" type ="xs:string" minOccurs ="0" maxOccurs ="1"/>
谢谢,
答案 0 :(得分:0)
尝试DOM在xml中提取!链接到此:http://php.net/manual/en/book.dom.php
答案 1 :(得分:0)
使用正则表达式来解析标记通常是不受欢迎的。但是,如果你对每一行使用正则表达式,并且可以确定每一行看起来像上面的例子(没有包装等),那么这将起作用:
my $xml =~ /^.*?name\s*=\s*"(Headline|ShortCaption)"\s*type\s*=\s*"(.*?)"\s*minOccurs\s*=\s*"(.*?)"\s*maxOccurs\s*=\s*"(.*?)".*$/
my $name = $1;
my $type = $2;
my $minOccurs = $3;
my $maxOccurs = $4;
我没有对此进行测试,但它非常基础,应该给你一个建立的例子。但是,我同意世界上几乎所有其他开发人员......使用正则表达式进行标记是一种灾难。