Perl解析Xml
我试图从通过SOAP:Lite导入的XML字符串中解析一些值。 我不精通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
<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()
。我使用它就像粘贴它一样。我用一种不同的(丑陋的)方式工作,谢谢