Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/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
Json 如何在Perl中将XML属性转换为元素?_Json_Xml_Perl - Fatal编程技术网

Json 如何在Perl中将XML属性转换为元素?

Json 如何在Perl中将XML属性转换为元素?,json,xml,perl,Json,Xml,Perl,我的监控应用程序仅在XML作为元素呈现时读取。 但我的源应用程序只提供JSON输出。我尝试使用以下perl代码将JSON输出转换为XML: # Capture the API output if ($ApiResponse->is_error()) { my $errorMsg = $ApiResponse->status_line(); print "error : $errorMsg\n Sending Connectivity Error\n"

我的监控应用程序仅在XML作为元素呈现时读取。 但我的源应用程序只提供JSON输出。我尝试使用以下perl代码将JSON输出转换为XML:

# Capture the API output
if ($ApiResponse->is_error())
{
    my $errorMsg = $ApiResponse->status_line();
    print "error : $errorMsg\n Sending Connectivity Error\n";
}
elsif ($ApiResponse->is_success()) 
{       
    my $JSONOutput = JSON->new->utf8->convert_blessed(1)->decode($ApiResponse->content()); 
    my $XMLOutput = XMLout($JSONOutput);
}
我的输出XML看起来像

<opt>
  <rowset affectedRows="444" dbname="custom" osname="SOMNI" tblname="tsiobm">
    <rows FirstOccurrence="1594021452" Node="host" RowSerial="250" Serial="98567869" Severity="5" Summary="SDV134E TWS JOB=A76DT803 JOB04878 WS=PROD APPL=A76DT80S ERROR=JCL  ID=DT803" Status="20" Prob_nr="SDV134E" />
    <rows FirstOccurrence="1594130034" Node="router-ess-vpn.elber.west" RowSerial="329" Serial="98639905" Severity="5" Summary="Tunnel2 Default Interface Ping/Default Interface Ping fail for 10.23.9.5: ICMP timeout" Status="20" Prob_nr="SDV_IDWN" />
    <rows FirstOccurrence="1594126166" Node="host" RowSerial="327" Serial="98637375" Severity="5" Summary="+SDV131E U00PR T09R905V 03:05:07 ACICSN1 RACINITI T09R9 STCOPC" Status="20" Prob_nr="SDV131E" />
    <rows FirstOccurrence="1594012257" Node="upjbxs1_adapter_9128" RowSerial="233" Serial="98561743" Severity="5" Summary="HTTP::Globo::Webserver: CRITICAL; Details: Fehler aufgetreten! - 3/3 " Status="20" Prob_nr="GSA_HTTP_Status" />
  </rowset>
</opt>

如何获得元素而不是属性中的输出。监视工作是否需要?

XML::Simple是。它自己的文档让你避免它

Simple是目前使用XML解析器最复杂的一种,这是假设它甚至可以做您希望它做的事情。当涉及到生成XML时,不幸的是这是没有希望的


使用或其他什么。

谢谢,我意识到XML::Simple是多么复杂,所以我不会使用它。
但是现在,将XMLout($JSONOutput)更改为XMLout($JSONOutput,NoAttr=>1)将输出作为元素提供。

您希望XML看起来像什么?您使用的是什么XML模块?
XMLout
来自哪里?需要一个新的。