【问题标题】:parsing xml using XML::LibXML; and perl使用 XML::LibXML 解析 xml;和 perl
【发布时间】:2013-02-16 01:07:14
【问题描述】:

我很难弄清楚下面布局的 xml 路径是什么。

<?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" 
}

【问题讨论】:

  • 你是否对另一个模块开放?
  • 是的,我愿意接受任何可行的方法。问题是我没有任何例子可以工作。 xml 结构是否正确。第一个节点是

标签: perl parsing xml-parsing


【解决方案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";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2015-02-04
    • 2012-07-08
    • 2021-08-15
    相关资源
    最近更新 更多