Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从XML::Simple的数据结构中提取值?_Xml_Perl_Xml Simple - Fatal编程技术网

如何从XML::Simple的数据结构中提取值?

如何从XML::Simple的数据结构中提取值?,xml,perl,xml-simple,Xml,Perl,Xml Simple,我试图找出如何解析XML中前2 37%和61.8F的值。我无法理解,因为它们似乎有相同的字段名,并且都在“传感器”下。。。任何帮助都将不胜感激 Perl代码: #!/usr/bin/perl use XML::Simple; use Data::Dumper; use LWP::Simple; $url = 'http://localhostmachine/output/XML/output.xml'; # create object my $xml = XML::Simple->

我试图找出如何解析XML中前2 37%和61.8F的值。我无法理解,因为它们似乎有相同的字段名,并且都在“传感器”下。。。任何帮助都将不胜感激

Perl代码:

#!/usr/bin/perl

use XML::Simple;
use Data::Dumper;
use LWP::Simple;


$url = 'http://localhostmachine/output/XML/output.xml';

# create object
my $xml = XML::Simple->new();

# read XML file
$data = $xml->XMLin(get($url));

# print output
print Dumper($data);
我正在读取的XML文件的输出:

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="wpman.xsl"?>
<watchport>
<title>
<TxtTitle>Location#1</TxtTitle>
</title>
<sensor>
<type>Combo Sensor (Humidity)</type>
<name>ComboSensor000</name>
<status>OK</status>
<current>37%</current>
<high>42 (10/19/2009 @ 04:05PM)</high>
<low>28 (10/17/2009 @ 11:26AM)</low>
</sensor>
<sensor>
<type>Combo Sensor (Temperature)</type>
<name>ComboSensor000</name>
<status>OK</status>
<current>61.6F</current>
<high>65.8 (10/17/2009 @ 11:26AM)</high>
<low>60.1 (10/19/2009 @ 04:00PM)</low>
</sensor>
<sensor>
<type> </type>
<name> </name>
<status> </status>
<current> </current>
</sensor>
<sensor>
<type>Updated: 10/19/2009 @ 05:47 PM</type>
<name>(Updated every 2 minutes)</name>
<status> </status>
<current> </current>
</sensor>
</watchport>

非常感谢

我想这就是你想要的

print $data->{sensor}[0]{current};
print $data->{sensor}[1]{current};

既然你已经得到了答案,下面是一些你可能会觉得有用的链接

它们很好地介绍了如何使用引用和复杂的数据结构,并提供了大量的示例

.
我不是想不屑一顾地向你扔RTFM,请不要以那种方式接受我的回答。Perl有很多文档,在开始时很难找到绕过它们的方法。是一个很好的资源,有助于揭开手册的神秘面纱。

我错了,我的意思是这是输入XML。对不起@请使用严格的;并使用警告;在你的scripts.omg中,就是这么简单!?我正在尝试$data->{sensor[0]}非常感谢Tim!