• Publicidad

XML::Simple no retorna la misma estructura xml entrante

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

XML::Simple no retorna la misma estructura xml entrante

Notapor jac1125 » 2008-10-14 15:36 @692

Buenas tardes.

Estoy leyendo un archivo xml con el siguiente código e imprimiendo el xml leído, pero el xml resultante no es igual, ¿alguien podría ayudarme?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!c:/Perl/bin/perl.exe
  use XML::Simple;
  use Data::Dumper;
  my $clientes = XMLin("testp.xml");
print XMLout($clientes,KeyAttr=>{},RootName=>'program', XMLDecl         => '<?xml version="1.0" encoding="utf-8" ?>',
                                                NoSort          => 0,
                                                KeepRoot        => 1,);
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Archivo xml entrante
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<appScripterApplication>
  <name><![CDATA[testp.xml]]></name>
  <version>
    <product>5.2.1.3205</product>
    <file>1.0</file>
  </version>
  <program>
    <node>
      <nodeID>1000</nodeID>
      <name><![CDATA[Start]]></name>
      <subtype>8</subtype>
      <xPos>36</xPos>
      <yPos>180</yPos>
      <appDataID>0</appDataID>
    </node>
    <icon>
      <recordID>0</recordID>
      <xPos>36</xPos>
      <yPos>180</yPos>
      <commandID>500</commandID>
      <commandName>StartApp</commandName>
      <commandLabel><![CDATA[Start]]></commandLabel>
      <command>
        <connector>
          <connectorID>0</connectorID>
          <destinationID/>
          <connectorName>Next</connectorName>
        </connector>
        <connector>
          <connectorID>1</connectorID>
          <destinationID/>
          <connectorName>End of call</connectorName>
        </connector>
        <connector>
          <connectorID>2</connectorID>
          <destinationID/>
          <connectorName>Max Time Exceeded</connectorName>
        </connector>
      </command>
    </icon>
  </program>
</appScripterApplication>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


XML saliente con XML::Simple
Sintáxis: [ Descargar ] [ Ocultar ]
Using xml Syntax Highlighting
<?xml version="1.0" encoding="utf-8" ?>
<program name="testp.xml">
  <program>
    <icon commandID="500" commandLabel="Start" commandName="StartApp" recordID="0" xPos="36" yPos="180">
      <command>
        <connector connectorID="0" connectorName="Next">
          <destinationID></destinationID>
        </connector>
        <connector connectorID="1" connectorName="End of call">
          <destinationID></destinationID>
        </connector>
        <connector connectorID="2" connectorName="Max Time Exceeded">
          <destinationID></destinationID>
        </connector>
      </command>
    </icon>
    <node appDataID="0" name="Start" nodeID="1000" subtype="8" xPos="36" yPos="180" />
  </program>
  <version file="1.0" product="5.2.1.3205" />
</program>
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Saludos

jacs
jac1125
Perlero nuevo
Perlero nuevo
 
Mensajes: 1
Registrado: 2008-10-14 15:06 @670

Publicidad

Notapor explorer » 2008-10-14 16:30 @729

Bienvenido a los foros de Perl en Español, jac1125.

Es muy posible que XML::Simple no sirva para este trabajo. Como indica el nombre, es para hacer cosas simples. No todas.

En estos foros hay algunos ejemplos de justamente eso: intentar leer y escribir la misma estructura XML. La experiencia dice que intentar imitar una estructura puede llegar a ser muy complicado o imposible, con ese módulo. Es casi siempre mucho mejor partir de una estructura ya generado por el módulo, pues es mucho más fácil volver a leer.

Si quieres intentarlo, todo consiste en jugar con las opciones de XMLin, Data::Dumper y XML::out. Y mucha paciencia.

O usar otro módulo...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 14 invitados