我有一个返回XML结果的perl脚本,我正在尝试将这些值设置为变量但是我甚至无法将它们分开,即使使用XML :: Simple
我试过了: “print $ xml-> {”to“} {”from“} {”heading“} {”body“}。”\ n“;”
返回XML值没有运气,但我需要将它们设置为变量:
这就是我所拥有的:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
use strict;
use warnings;
use LWP::Simple;
use XML::Simple;
my $xml;
my $XML_Server = "http://videotuber.atwebpages.com/cgi-bin/cgitest.pl";
my $UserContent = get($XML_Server);
print qq~$UserContent \n\n~;
print $xml->{"to"}{"from"}{"heading"}{"body"} . "\n";
答案 0 :(得分:4)
有很多事情让人们很难帮助你:
$xml->{"to"}{"from"}{"heading"}{"body"}
并说它不起作用我建议更改生成您要提取的URL的代码,以创建有效的XML(<?xml ...
我还建议使用XML :: LibXML。这是a tutorial。
这里有一些代码可以帮助你入门:
#!/usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
use XML::LibXML;
my $xml_server = "http://videotuber.atwebpages.com/cgi-bin/cgitest.pl";
my $user_content = get($xml_server);
my $dom = XML::LibXML->load_xml(string => $user_content);
my $to = $dom->findvalue('/note/to');
my $from = $dom->findvalue('/note/from');
my $heading = $dom->findvalue('/note/heading');
my $body = $dom->findvalue('/note/body');
print "To: $to\n";
print "From: $from\n";
print "Heading: $heading\n";
print "Body: $body\n";
修改强>
对于后代,引用URL返回的XML返回如下内容:
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>alice</to>
<from>bob</from>
<heading>reminder</heading>
<body>don't forget the milk</body>
</note>
(但在初始XML声明之前有一个空行)