【问题标题】:How do you use XML::Parser with Style => 'Objects'你如何使用 XML::Parser 和 Style => 'Objects'
【发布时间】:2010-09-07 06:54:29
【问题描述】:

XML::Parser::Style::Objects 的手册页很糟糕。一个简单的 hello world 风格的程序真的很有帮助。

我真的很想做这样的事情:(当然不是真正的代码)

use XML::Parser;
my $p = XML::Parser->new(Style => 'Objects', Pkg => 'MyNode');
my $tree = $p->parsefile('foo.xml');
$tree->doSomething();

MyNode::doSomething() {
  my $self = shift;
  print "This is a normal node";
  for $kid ($self->Kids)
  {
    $kid->doSomething();
  }
}

MyNode::special::doSomething() {
  my $self = shift;
  print "This is a special node";
}

【问题讨论】:

    标签: xml perl


    【解决方案1】:

    当我需要做类似的事情时,通常我最终会使用XML::Parser::EasyTree ,它有更好的文档并且更易于使用。

    我强烈推荐它。

    【讨论】:

      【解决方案2】:

      在所有情况下,这里都是运行的实际代码……意义不大,但会产生输出,希望可以帮助您入门……

      use XML::Parser;
      
      package MyNode::inner;
          sub doSomething {
            my $self = shift;
            print "This is an inner node containing : ";
            print $self->{Kids}->[0]->{Text};
            print "\n";
          }
      package MyNode::Characters;
          sub doSomething {}
      package MyNode::foo;
          sub doSomething {
            my $self = shift;
            print "This is an external node\n";
            for $kid (@ { $self->{Kids} }) {
              $kid->doSomething();
            }
          }
      
      package main;
      
      my $p = XML::Parser->new(Style => 'Objects', Pkg => 'MyNode');
      my $tree = $p->parsefile('foo.xml');
      for (@$tree) {
          $_->doSomething();
      }
      

      使用 foo.xml

       <foo> <inner>some text</inner> <inner>something else</inner></foo>
      

      哪个输出

      >perl -w "tree.pl"     
      This is an external node
      This is an inner node containing : some text
      This is an inner node containing : something else
      

      希望对您有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-11-07
        • 2012-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-26
        • 1970-01-01
        相关资源
        最近更新 更多