Estoy usando el módulo XML::LibXML para editar un xml. Quiero capturar el texto de algunos elementos en diferentes variables, pero tengo problemas cuando se trata de un elemento vacío. Por ejemplo, imaginando el siguiente XML:
Using xml Syntax Highlighting
- <root>
- <elemento1>texto</elemento1>
- <elemento2/>
- </root>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Tengo el siguiente código:
Using perl Syntax Highlighting
- foreach $node ( $doc->findnodes('//elemento1') ) {
- $elemento1 = $node->firstChild->data;
- };
- foreach $node ( $doc->findnodes('//elemento2') ) {
- $elemento2 = $node->firstChild->data;
- };
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
Pero al llegar al elemento vacío el script se detiene mostrando el siguiente error:
Can't call method "data" on undefined value
He probado lo siguiente, pero sin éxito:
Using perl Syntax Highlighting
- foreach $node ( $doc->findnodes('//elemento2"]') ) {
- if ( $node->firstChild->isEmptyElement() ) { $elemento2 = ''; }
- else { $elemento2 = $node->firstChild->data; }
- };
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Supongo que el problema es que no existe un firstChild para ese elemento porque es un elemento vacío, pero ¿cómo puedo entonces solventar estos casos...?