许多广播电台正在使用新闻节目,将故事和新闻广播作为XML文件导出,如此
<?xml version="1.0" encoding="UTF-8"?>
<PublishStory>
<Name>Story Title</Name>
<Description>Description of the Story</Description>
<Story>
<Text>Story Text</Text>
<Media>
<Name>Media Name</Name>
<Description>Description of Media</Description>
<OutCue>Last Sound on Media</OutCue>
<Length>001:11.653</Length>
<FileName>MediaName.wav</FileName>
</Media>
</Story>
<PublishTime>2014-08-18T20:17:41.0000000</PublishTime>
<ExpiresAfter>2014-08-22T20:17:41.0000000</ExpiresAfter>
<RtfFile>Name Of Associated RTF file.rtf</RtfFile>
</PublishStory>
但XML文件的格式并非设计用于使用RPCXML将故事发布到Joomla等网站。我有一个简单的解析解决方案:
#!/usr/bin/env perl
use strict;
use warnings;
# use module
use XML::Simple;
use Data::Dumper;
# create object
my $xml = new XML::Simple;
# read XML file
my $data = $xml->XMLin("StartingXMLfile.xml");
# access XML data
print $data->{Name};
print "\n";
print $data->{Description};
print "\n";
print $data->{Story}{Text};
print "\n";
print $data->{Story}{Media}{Description};
print "\n";
print $data->{Story}{Media}{FileName};
print "\n";
print $data->{Story}{Media}{Name};
print "\n";
print $data->{Story}{Media}{Length};
print "\n";
print $data->{PublishTime};
print "\n";
print $data->{ExpiresAfter};
print "\n";
但是我无法想出为RPC部分创建XML文件的方法。 最终的XML文件看起来像这样:
<?xml version="1.0" encoding="UTF-8" ?>
<methodCall>
<methodName><![CDATA[metaWeblog.newPost]]></methodName>
<params>
<param><value><string><![CDATA[0]]></string></value></param>
<param><value><string><![CDATA[AccountName]]></string></value></param>
<param><value><string><![CDATA[AccountPsswd]]></string></value></param>
<param><value><struct>
<member>
<name><![CDATA[title]]></name>
<value><string><![CDATA[Story Name]]></string></value>
</member>
<member>
<name><![CDATA[description]]></name>
<value><string><![CDATA[Story Description]]></string></value>
</member>
<member>
<name><![CDATA[categories]]></name>
<value><array><data>
<value><string><![CDATA[Category]]></string></value>
</data></array></value>
</member>
<member>
<name><![CDATA[mt_keywords]]></name>
<value><string><![CDATA[]]></string></value>
</member>
<member>
<name><![CDATA[custom_fields]]></name>
<value><array><data/></array></value>
</member>
<member>
<name><![CDATA[mt_excerpt]]></name>
<value><string><![CDATA[]]></string></value>
</member>
</struct></value></param>
<param><value><boolean>1</boolean></value></param>
</params>
</methodCall>
最后,我希望有一些能在cron作业上运行的东西,它会检查XML文件的目录,转换文件并使用curl将XML发布到网站上。 然后删除原始XML和转换后的XML。