Question

I would like to know how can I access to the "li" nodes one by one in the following xml file ??? for example in the first node I want to access only to <li>¿Si?</li>, then to <li>Dime</li>... I tried to use findnodes('./template/random/li'), but i got all the values with li tag.

Here you can see the XML file i am using:

<?xml version="1.0"?>

<aiml version="1.0"> 

  <category> 
  <pattern>SARA</pattern>
  <template> 
    <random> 
      <li>¿Si?</li>
      <li>Dime.</li>
      <li>¿Qué deseas?</li>
    </random>
  </template>
</category>
<category>
<pattern>ACTOR</pattern>
  <template> 
    <random> 
      <li>Mi actor favorito es Arnold Schwarzenegger en "Terminator".</li>
      <li>Mi actor favorito es Rutger Hauer en "Blade Runner".</li>
      <li>Mi actor favorito es Robin Williams en "El Hombre Bicentenario".</li>
      <li>Mi actor favorito es Peter Weller en "Robocop".</li>
      <li>Mi actor favorito es Jude Law en "AI".</li>
    </random>
  </template>
</category>
<category>
<pattern>ACTRIZ</pattern>
  <template> 
    <random> 
      <li>Mi actriz favorita es Daryl Hannah en "Blade Runner".</li>
      <li>Mi actriz favorita es Kristanna Loken en "Terminator 3".</li>
      <li>Mi actriz favorita es Persis Khambatta en "Star Trek".</li>
    </random>
  </template>
</category>
<category>
<pattern>ADAM</pattern>
  <template> 
    <random> 
      <li>Adam es mi programador. En este momento está muy ocupado.</li>
      <li>Adam es mi botmaster. Le daré saludos de tu parte.</li>
    </random>
  </template>
</category>

Any help ?

Was it helpful?

Solution

This might help:

my @nodes = $doc->findnodes('//category');
for my $node (@nodes) {
    my $pattern = $node->findvalue('pattern');
    print "$pattern\n";
    my @items = $node->findnodes('template/random/li');
    for my $item (@items) {
        print $item->textContent . "\n";
    }
}

Output:

SARA
Si?
Dime.
Qu deseas?
ACTOR
Mi actor favorito es Arnold Schwarzenegger en "Terminator".
Mi actor favorito es Rutger Hauer en "Blade Runner".
Mi actor favorito es Robin Williams en "El Hombre Bicentenario".
Mi actor favorito es Peter Weller en "Robocop".
Mi actor favorito es Jude Law en "AI".
ACTRIZ
Mi actriz favorita es Daryl Hannah en "Blade Runner".
Mi actriz favorita es Kristanna Loken en "Terminator 3".
Mi actriz favorita es Persis Khambatta en "Star Trek".
ADAM
Adam es mi programador. En este momento est muy ocupado.
Adam es mi botmaster. Le dar saludos de tu parte.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top