Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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
Perl解析Xml_Perl_Xml Parsing - Fatal编程技术网

Perl解析Xml

Perl解析Xml,perl,xml-parsing,Perl,Xml Parsing,我试图从通过SOAP:Lite导入的XML字符串中解析一些值。 我不精通perl,我无法通过谷歌搜索或阅读这里的相关问题来解决这个问题 我试图解析的XML如下所示: <COMPUTER> <ACCOUNTINFO> <ENTRY Name="fields_12"></ENTRY> <ENTRY Name="fields_24"></ENTRY> <ENTRY Name="TAG">Ar

我试图从通过SOAP:Lite导入的XML字符串中解析一些值。 我不精通perl,我无法通过谷歌搜索或阅读这里的相关问题来解决这个问题

我试图解析的XML如下所示:

<COMPUTER>
  <ACCOUNTINFO>
    <ENTRY Name="fields_12"></ENTRY>
    <ENTRY Name="fields_24"></ENTRY>
    <ENTRY Name="TAG">Arias 4431</ENTRY>
    <ENTRY Name="fields_23"></ENTRY>
    <ENTRY Name="fields_16"></ENTRY>
    <ENTRY Name="fields_11"></ENTRY>
    <ENTRY Name="fields_6"></ENTRY>
    <ENTRY Name="fields_22"></ENTRY>
    <ENTRY Name="fields_20"></ENTRY>
    <ENTRY Name="fields_21"></ENTRY>
    <ENTRY Name="fields_17"></ENTRY>
    <ENTRY Name="fields_3">Vigilancia</ENTRY>
    <ENTRY Name="fields_14"></ENTRY>
    <ENTRY Name="fields_9"></ENTRY>
    <ENTRY Name="fields_8"></ENTRY>
    <ENTRY Name="fields_19"></ENTRY>
    <ENTRY Name="fields_10"></ENTRY>
    <ENTRY Name="fields_28"></ENTRY>
    <ENTRY Name="fields_26"></ENTRY>
    <ENTRY Name="fields_15"></ENTRY>
    <ENTRY Name="fields_5"></ENTRY>
    <ENTRY Name="fields_27"></ENTRY>
    <ENTRY Name="fields_7"></ENTRY>
    <ENTRY Name="fields_25"></ENTRY>
    <ENTRY Name="fields_13"></ENTRY>
    <ENTRY Name="fields_18"></ENTRY>
    <ENTRY Name="fields_4">Vigilancia</ENTRY>
  </ACCOUNTINFO>
  <DICO_SOFT>
    <WORD>Freeware</WORD>
    <WORD>AXIS Video</WORD>
    <WORD>Java</WORD>
    <WORD>Drivers & OEM software</WORD>
    <WORD>Actualizaciones de Microsoft</WORD>
    <WORD>MS Operating Systems</WORD>
  </DICO_SOFT>
  <HARDWARE>
    <CHECKSUM>131071</CHECKSUM>
    <DEFAULTGATEWAY></DEFAULTGATEWAY>
    <DESCRIPTION></DESCRIPTION>
    <DNS></DNS>
    <FIDELITY>9214</FIDELITY>
    <ID>453</ID>
    <IPADDR>10.30.8.214</IPADDR>
    <IPSRC>10.30.8.214</IPSRC>
    <LASTCOME>2013-12-27 12:47:42</LASTCOME>
    <LASTDATE>2013-12-27 12:47:42</LASTDATE>
    <MEMORY>2048</MEMORY>
    <NAME>EC214001</NAME>
    <OSCOMMENTS>Service Pack 1</OSCOMMENTS>
    <OSNAME>Microsoft Windows 7 Professional</OSNAME>
    <OSVERSION>6.1.7601</OSVERSION>
    <PROCESSORN>1</PROCESSORN>
    <PROCESSORS>2399</PROCESSORS>
    <PROCESSORT>Intel(R) Core(TM) i3 CPU M 370 @ 2.40GHz [2 core(s) x64]</PROCESSORT>
    <QUALITY>0.0716</QUALITY>
    <SSTATE>0</SSTATE>
    <SWAP>3868</SWAP>
    <TYPE>0</TYPE>
    <USERAGENT>OCS-NG_WINDOWS_AGENT_v2.0.5.0</USERAGENT>
    <USERDOMAIN></USERDOMAIN>
    <USERID>vigilancia</USERID>
    <WINCOMPANY></WINCOMPANY>
    <WINOWNER>vigilancia</WINOWNER>
    <WINPRODID>55041-033-4366171-86806</WINPRODID>
    <WINPRODKEY>BBBBB-BBBBB-BBBBB-BBBBB-BBBBB</WINPRODKEY>
    <WORKGROUP>MASSONE</WORKGROUP>
  </HARDWARE>
</COMPUTER>
但它不起作用


提前感谢

由于此元素,您的
xml
格式不正确:

<WORD>Drivers & OEM software</WORD>
您可以像这样运行它:

perl script.pl xmlfile
这将产生:

Vigilancia
453
10.30.8.214
EC214001

由于此元素,您的
xml
格式不正确:

<WORD>Drivers & OEM software</WORD>
您可以像这样运行它:

perl script.pl xmlfile
这将产生:

Vigilancia
453
10.30.8.214
EC214001

您可以尝试使用Data::Dumper查看XML文件之后创建的数据结构,请使用以下代码:

use strict;
use warnings;
use XML::Simple;
use Data::Dumper;

my $ref = XMLin("t.xml");
print Dumper($ref);

$ref
将保存对要访问的数据结构的引用。有关使用XML::Simple的更多信息,请查看此链接:它有示例并详细解释了此模块。

您可以尝试使用Data::Dumper查看XML文件后创建的数据结构,请使用以下代码:

use strict;
use warnings;
use XML::Simple;
use Data::Dumper;

my $ref = XMLin("t.xml");
print Dumper($ref);

$ref
将保存对要访问的数据结构的引用。有关使用XML::Simple的更多信息,请查看此链接:它有示例并详细解释了此模块。

对于您的问题,“它不起作用”不是一个很好的描述。您是否得到错误、意外结果或根本没有输出?尝试使用
Data::Dumper
转储
$newid
。您的ID元素可以位于hashref的更深层。另外,请始终在脚本中启用严格限制和警告(
使用严格;使用警告;
)“它不起作用”并不能很好地描述您的问题。您是否得到错误、意外结果或根本没有输出?尝试使用
Data::Dumper
转储
$newid
。您的ID元素可以位于hashref的更深层。另外,在脚本中始终启用严格限制和警告(
使用严格;使用警告;
)。这看起来不错,但不起作用。我得到以下错误:您似乎对文件名(*XML::Parser::FILE)使用了parse方法,您可能希望在./Parser.pl第18行使用parsefile。在./parser.pl行18@Bruno9779:您是在使用我编写的代码,还是自己添加新内容?我一直在查看模块的源代码,错误来自
parse()
方法,而不是
parsefile()
。我使用它就像粘贴它一样。我让事情以另一种(丑陋的)方式运行,谢谢这看起来不错,但不起作用。我得到以下错误:您似乎对文件名(*XML::Parser::FILE)使用了parse方法,您可能希望在./Parser.pl第18行使用parsefile。在./parser.pl行18@Bruno9779:您是在使用我编写的代码,还是自己添加新内容?我一直在查看模块的源代码,错误来自
parse()
方法,而不是
parsefile()
。我使用它就像粘贴它一样。我用一种不同的(丑陋的)方式工作,谢谢