En este caso, yo necesito leer un XML que es la respuesta de consumir un servicio, y tengo dos casos, uno cuando el XML es una respuesta correcta (en ese caso no se presenta nada al usuario) y la otra cuando viene especificado el error, en ese caso se requiere presentar al usuario el código de error y el mensaje de error.
Aquí los dos XML.
1. Cuando el proceso es correcto
2. Cuando el proceso es incorrecto
<soap:Envelope xmlns:soap=" http://www.w3.org/2003/05/soap-envelope " xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<actualizarCatalogosResult>
<Resultado xmlns="">
<Proceso>Incorrecto</Proceso>
<Mensaje>El campo Tipo de Dimensión no es válido (Sólo admite valores: 1, 2, 3).</Mensaje>
<Codigo>E001</Codigo>
</Resultado>
</actualizarCatalogosResult>
</actualizarCatalogosResponse>
</soap:Body>
</soap:Envelope>
Y el código en ax, para leer la cadena que me responde el servicio.
public static void showMessageXML( str _sourceXMLFile)
{
str proceso, mensaje, codigoError;
XmlDocument xmlDocument;
XmlNodeList nodeList;
XmlNode node;
XMLNodeListIterator xmlNodeListIterator;
Counter counter;
xmlDocument = XmlDocument::newXml(_sourceXMLFile);
nodeList = xmlDocument.selectNodes( '//Resultado'); // Nombre del nodo padre que quiero iterar
xmlNodeListIterator = new xmlNodeListIterator(nodeList);
while(xmlNodeListIterator.moreValues()) // Comenzando a iterar el nodo padre
{
counter++;
node = xmlNodeListIterator.value();
if(node.selectSingleNode('Proceso' )) // Nombre del nodo que queremos leer
proceso = node.selectSingleNode( 'Proceso').text(); // Asignando valor del nodo
if(node.selectSingleNode('Mensaje' ))
mensaje = node.selectSingleNode( 'Mensaje').text();
if(node.selectSingleNode('Codigo' ))
codigoError = node.selectSingleNode( 'Codigo').text();
// Si existe un mensaje de error, se presenta al usuario junto con el mensaje de error
if (node.selectSingleNode('Mensaje' ) && node.selectSingleNode('Codigo'))
{
Box::warning( strFmt("Error: %1 - %2" , codigoError, mensaje), "Interfaz Ax");
}
xmlNodeListIterator.nextValue();
}
}
Post relacionados:
Escribir XML por código
Leer excel por código
Crear documentos asociados a un registro
Y por cierto, acuérdate de darle click a algún anuncio si el post te sirvió de algo.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
No olvides que te puedes unir a la página en Facebook Aprendiendo Dynamics Ax donde únicamente se tratan temas de desarrollo y se busca crear una comunidad de desarrollador@s de Ax en nuestro idioma.
Gracias, por el aporte, muy bueno y la explicación muy clarita!
ResponderBorrar