2013-02-16 96 views
1

我很难搞清楚什么xml路径是布局下面的布局。使用XML :: LibXML解析xml;和perl

<?xml version="1.0"?> 
<Root Name="\\Admin1\ROOT" State="1" Timeout="300" > 
     <Target Server="Admin`" Folder="ROOT" State="2"/> 

     <Link Name="users\foo" State="1" Timeout="300" > 
       <Target Server="server1" Folder="folder1\foo" State="2"/> 
     </Link> 


     <Link Name="users\bar" State="1" Timeout="300" > 
      <Target Server="server2" Folder="folder2\bar" State="2"/> 
     </Link> 
</Root> 

我似乎无法弄清楚如何使波纹管代码打印每个链接名称。

use strict;use warnings; 

my $filename = 'dfs_dump.xml'; 

use XML::LibXML; 
my $parser = XML::LibXML->new(); 

my $doc = $parser->parse_file($filename); 
foreach my $link ($doc->findnodes('/Root Name/Target Server')) { 
    my($title) = $link->findnodes('/Link Name'); 
    print $title->to_literal, "\n" 
} 
+0

你开到另一个模块? – 2013-02-16 01:41:40

+0

是的,我打开任何有效的工作。事情是我无法得到任何工作的例子。 xml结构是否正确。第一个节点是 – 2013-02-18 17:55:03

回答

1
for my $link_node ($doc->findnodes('/Root/Link')) { 
    print $link_node->getAttribute('Name') // "[none]", "\n"; 
} 

for my $link_name ($doc->findnodes('/Root/Link/@Name')) { 
    print $link_name->getData(), "\n"; 
}