我有一个包含标签之间数据的文本文件。标签是:
<title>
<url>
<pubDate>
因此,条目如下所示:
<title>title 1</title>
<url>url 1</url>
<pubDate>pubDate 1</pubDate>
<title>title 2</title>
<url>url 2</url>
<pubDate>pubDate 2</pubDate>
<title>title 3</title>
<url>url 3</url>
<pubDate>pubDate 3</pubDate>
我需要一个脚本来读取此文本文件并准备要插入数据库的每个项目。查询将如下所示:
insert into table (title,url,pubdate) values ($title,$url,$pubdate)....
答案 0 :(得分:2)
为什么使用“<
”而不只是“<
”?
只需将所有“<
”和“>
”转换为“<
”和“>
”,然后将其转换为XML::Simple之类的内容在Perl。
答案 1 :(得分:1)
PHP5中的SimpleXML http://php.net/simplexml
@rascher将XML实体转换为“XML文字”应该没有任何问题。
< title > C > Java < /title >
将编码为:
< title &gt; C > Java < /title >
解码XML实体会产生有效的XML。
答案 2 :(得分:1)
#!/usr/bin/perl
use strict;
use warnings;
my %seen = ();
sub seen_all {
defined $seen{title}
&& defined $seen{url}
&& defined $seen{pubDate};
}
while (<>) {
/<(.+?)>(.+)<\/\1>/ && do {
$seen{$1} = $2;
};
if(seen_all){
print "insert into table (title,url,pubdate) " .
"values ('$seen{title}','$seen{url}','$seen{pubDate}')\n";
%seen = ();
}
}
答案 3 :(得分:1)
您可能希望看一下Text::Balanced。它有一个“extract_tagged”函数,可以完全解决您所概述的问题。
答案 4 :(得分:0)
你可以用它。您可以使用Simple XML类
阅读RSS$data = file_get_contents('http://www.example.com/path-to-feed.xml');
$xml = new SimpleXMLElement($data);
foreach($xml->feed as $feed){
echo $feed->title;
echo '<br />';
echo $feed->url;
echo '<br />';
echo $feed->pubDate;
echo '<br />';
}