Как вы используете XML :: Parser с Style = > 'Объекты'

StackOverflow https://stackoverflow.com/questions/34914

  •  09-06-2019
  •  | 
  •  

Вопрос

Страница руководства по XML :: Parser :: Style :: Objects ужасна. Простая привет программа в мировом стиле будет очень полезна.

Я действительно хотел сделать что-то вроде этого: (конечно, не настоящий код)

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";
}
Это было полезно?

Решение

Во всех случаях здесь приведен фактический код, который выполняется ... не так много значит, но выдает результат и, надеюсь, поможет вам начать ...

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) {
    

Во всех случаях здесь приведен фактический код, который выполняется ... не так много значит, но выдает результат и, надеюсь, поможет вам начать ...

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

с foo.xml

>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

который выводит

<*>

Надеюсь, это поможет.

->doSomething(); }

с foo.xml

<*>

который выводит

<*>

Надеюсь, это поможет.

Другие советы

Когда мне нужно сделать что-то подобное, обычно я использую XML :: Parser :: EasyTree имеет лучшую документацию и проще в использовании.

Я очень рекомендую это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top