【问题标题】:Parsing Edimax Smart Plug SP-2101W V2 XML Output解析 Edimax 智能插头 SP-2101W V2 XML 输出
【发布时间】:2020-04-18 15:43:54
【问题描述】:

我正在尝试访问 Edimax 智能插头 SP-2101W V2 的 smartplug.cgi 以使用电流和功率值。不幸的是,输出是(像)XML,我不熟悉。
我得到的 Edimax 的输出只有一行:

<?xml version="1.0" encoding="UTF8"?><SMARTPLUG id="edimax"><CMD id="get"><NOW_POWER><Device.System.Power.NowCurrent>0.7988</Device.System.Power.NowCurrent><Device.System.Power.NowPower>152.06</Device.System.Power.NowPower></NOW_POWER></CMD></SMARTPLUG>

我想要的只是这样的输出:

电流:0.7988A

功率:152.06W

最后,我请求一些支持,以便在加载 xml 内容后使用XML::LibXML 对解析器进行编码。

到目前为止我的脏 perl 代码:

#!/usr/bin/perl


#
# curl --digest -s -X POST -d '<?xml version="1.0" encoding="UTF8"?><SMARTPLUG id="edimax"><CMD id="get"><NOW_POWER><Device.System.Power.NowCurrent></Device.System.Power.NowCurrent><Device.System.Power.NowPower></Device.System.Power.NowPower></NOW_POWER></CMD></SMARTPLUG>' http://admin:XXXXXXXX@10.100.100.46:10000/smartplug.cgi
#

use strict;
use warnings;
use Capture::Tiny ':all';
use XML::LibXML;

my ($ip, $password) = @ARGV;
my $username = "admin";
my $command_get_power = "curl --digest -s -X POST -d '<?xml version=\"1.0\" encoding=\"UTF8\"?><SMARTPLUG id=\"edimax\"><CMD id=\"get\"><NOW_POWER><Device.System.Power.NowCurrent></Device.System.Power.NowCurrent><Device.System.Power.NowPower></Device.System.Power.NowPower></NOW_POWER></CMD></SMARTPLUG>'";

my $url = " http://admin:" . $password . "@" . $ip . ":10000/smartplug.cgi";
my $exec_cmd = $command_get_power . $url;


my ($stdout, $stderr, $exit) = capture {
        system($exec_cmd);
};

print $stdout;

my $xml_data = XML::LibXML->load_xml(string=>$stdout);

【问题讨论】:

    标签: xml perl


    【解决方案1】:
    use XML::LibXML qw();
    my $xml = '<?xml vers…………';
    my $dom = XML::LibXML->load_xml(
        string => \$xml
    );
    print $dom->findvalue('//Device.System.Power.NowCurrent'); # 0.7988
    print $dom->findvalue('//Device.System.Power.NowPower');   # 152.06
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 2013-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多