【发布时间】:2012-03-08 08:40:45
【问题描述】:
我有一个通过 HTTP POST 发送给我的 XML 文档:
<?xml version="1.0" encoding="UTF-8" ?>
<DeliveryNotification eventType="newMessage">
<requestUid>sms9676187</requestUid>
<sentMessageUid>sms29282896</sentMessageUid>
....
</DeliveryNotification>
然后我使用 param() 子例程在 perl 脚本中收到:
#!/usr/bin/perl -w
use strict;
use CGI qw/param/;
use Data::Dumper;
my @xml = param();
warn Dumper(@xml);
当我转储我得到的结果时:
$VAR1 = '<?xml version';
每当文件遇到“=”符号时,它似乎都会破坏文件。如果我删除第一个 eqauls 符号进行测试,它只会在下一个符号处中断。这只能通过转义等号从发送数据的一方解决,还是我可以在 Perl 中做些什么?
【问题讨论】:
-
如何发送数据? HTTP 请求的内容类型是什么?请求的正文是什么样的?
-
XML 如何在
param()的结果中结束?为什么 dio 要将这些结果存储到数组中?您想对返回的 XML 做什么?如果您需要查看其内容,请使用 XML 解析器。 -
发送的数据就像一个后查询,但不是 "id=22111&name=xxx" 它是一个 XML 文档,因此是一个包含整个 XML 文档的字符串。我将它存储在一个数组中,因为当我将它存储在一个标量中时,我只会得到“1”。一旦我收到的数据完整并且在 = 符号后没有被截断,我将使用 XML 解析器