2013-02-16 3 views
1

Мне сложно понять, что путь xml для макета ниже.разбор XML с использованием XML :: LibXML; и 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

Вы открыты для другого модуля? –

+0

да, я открыт для всего, что работает. Дело в том, что я не могу получить никаких примеров для работы. Правильно ли структурирован xml. Первый узел –

ответ

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"; 
} 
Смежные вопросы