【发布时间】:2011-04-22 16:51:42
【问题描述】:
我想问你的是,当我想整理附件时使用:
my $tidy_doc = XML::Tidy->new("filename"=>"/Users/.../tidy.xml") ;
$tidy_doc->tidy() ;
$tidy_doc->write() ;
工作得很好,但是当我想使用它来整理它时:
my $tidy_doc = XML::Tidy->new("xml"=>$doc) ;
我收到以下错误:
bash-3.2# ./_demo.pl
Use of uninitialized value $xmld in substitution (s///) at /Library/Perl/5.10.0/XML/Tidy.pm line 59.
Use of uninitialized value $xmld in pattern match (m//) at /Library/Perl/5.10.0/XML/Tidy.pm line 60.
not well-formed (invalid token) at line 1, column 21, byte 21:
XML::LibXML::Document=SCALAR(0x100805140)
====================^
at /System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level/XML/Parser.pm line 187
如果您能帮我解决这个问题,我将不胜感激。
附言。 .xml 文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<n_skalis>
<perfdata collection="GigabitEthernet0/0">
<info cmd="show interface" detail="GigabitEthernet0/0">
<input_rate>-1</input_rate><output_rate>-1</output_rate></info>
<info cmd="show interface" detail="GigabitEthernet0/0/1">
<output_rate>-1</output_rate></info>
</perfdata>
<perfdata collection="GigabitEthernet1/1">
<info cmd="show interface" detail="GigabitEthernet1/1">
<input_rate>-1</input_rate><output_rate>-1</output_rate></info>
<info cmd="show interface" detail="GigabitEthernet1/1/0">
<output_rate>-1</output_rate></info>
</perfdata>
<perfdata collection="self">
<info cmd="show buffers summary" detail="">
<big_pool>-1</big_pool><small_pool>-1</small_pool></info>
</perfdata>
</n_skalis>
谢谢
附言。 $doc 定义如下:
my $doc = $parser->parse_file("$XMLDEV"."config/".$node_dns."/STATS.xml") ;
if( !$doc ) { warn "---> non well-formed XML file: $@" ; next ; }
my $root = $doc->getDocumentElement ;
【问题讨论】:
-
您能否为您的第二个代码示例提供更多上下文?具体来说,$doc是如何定义的?
-
感谢您的兴趣,这里是:
-
我的 $doc = $parser->parse_file("$XMLDEV"."config/".$node_dns."/tidy.xml") ; if( !$doc ) { warn "---> 非格式良好的 XML 文件:$@" ;下一个 ; } 我的 $root = $doc->getDocumentElement ;
-
哎呀,对不起,我重新编辑了我的帖子。你能用我刚刚发布的 .xml 文档验证它吗?