XML 变量值

XML Value to variables

我有一个 perl 脚本 returns XML 结果,我试图将这些值设置为变量,但我什至似乎无法将它们分开,即使 XML::Simple

我试过: "print $xml->{"至"}{"from"}{"heading"}{"body"}。"\n";"

到 return XML 值没有运气,但我需要将它们设置为变量:

  1. $到
  2. $来自
  3. $标题
  4. $body

这是我的资料:

#!/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";

有很多事情让人很难帮助你:

  1. 您没有包含 XML 输入的示例
  2. 您没有包含代码预期输出的示例
  3. 您提供的 URL 包含无效的内容 XML
  4. 您正在尝试使用 XML::Simple - 没有人推荐
  5. 您显然不了解 Perl 引用,所以您只是编造 $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 声明之前有一个空行)