Esta página esta en desarrollo, Sean bienvenidos.

Agregar Nodo C#

Buenas tardes visitantes, este día vamos a ver una pequeña forma de incrustar un nodo de un archivo XML a otro archivo XML.

En mi caso lo ocupe para realizar una aplicación el cual consiste en generar un archivo XML, enviarlo a un Web Service y este a su vez me regresa el mismo archivo XML pero con información adicional.

Lo interesante es que al Web Service le enviamos el archivo XML en texto “string” pero se tiene que quitar una parte en específica “Addenda” en el caso de México.

Por lo cual el archivo original es:

incrustar un nodo de un archivo XML a otro archivo XML

Envio el archivo al Web Service y me regresa:

incrustar un nodo de un archivo XML a otro archivo XMLAhora al archivo de respuesta le tenemos que integrar la parte que se quito para el envió al Web Service y quedaría de la siguiente manera:

incrustar un nodo de un archivo XML a otro archivo XML

En mi caso tuve problemas y el archivo me quedaba de la siguiente manera:

incrustar un nodo de un archivo XML a otro archivo XML

 

Es incorrecto debido a qué no me coloca las etiquetas Addenda.

 

Mi código para leer la parte de la Addenda Archivo XML:

public string ReadInvoiceXml(string FileNameXmlReaderOutPut)

{

string ReadInvoiceXmlOutPut= “”;

XmlDocument LoadInvoiceWebService = new XmlDocument();

XmlNodeList ListAddendaWebService;

try

{

LoadInvoiceWebService.Load(FileNameXmlReaderOutPut);

XmlNodeList ListComprobanteTimbradoWebService = LoadInvoiceWebService.GetElementsByTagName(“cfdi:Comprobante”); //Mi nodo raiz

foreach (XmlElement ListComprobanteTimbradoItemsWebService in ListComprobanteTimbradoWebService)

{

ListAddendaWebService = ListComprobanteTimbradoItemsWebService.GetElementsByTagName(“cfdi:Addenda”);

if (ListAddendaWebService.Count >= 1)

{

foreach (XmlElement listAddendaItemsWebService in ListAddendaWebService)

{

AddendaCanonOutPutNode = ListComprobanteTimbradoItemsWebService[“cfdi:Addenda”]; //La Addenda como “XmlNode” nodo Addenda

FacturaConAddenda = true;

ReadInvoiceAddendaXML = listAddendaItemsWebService.OuterXml; //L a Addenda como cadena “string”.

}

}

for (int i = ListComprobanteTimbradoItemsWebService.ChildNodes.Count – 1; i >= 0; –i)

{

if (ListComprobanteTimbradoItemsWebService.ChildNodes[i].Name.ToLower() == “cfdi:addenda”)

{

ListComprobanteTimbradoItemsWebService.RemoveChild(ListComprobanteTimbradoItemsWebService.ChildNodes[i]);//Parte para quitar la parte de // la Addenda y enviar mi factura al Web Service.

}

}

ReadInvoiceCompleteXml = ListComprobanteTimbradoItemsWebService.OuterXml; //Como en la parte de arriba ya quite la parte de la Addenda, ya no me lee las eqtiquetas de la Addenda.

}

ReadInvoiceXmlOutPut = “Comandos completados correctamente.”;

}

catch (Exception ex)

{

ReadInvoiceXmlOutPut = “Comandos completados incorrectamente. “ + ex.Message;

}

return ReadInvoiceXmlOutPut;

}

 

 

La respuesta del web service es una archivo XML como cadena “String”.

InvoiceTimbradoXml.LoadXml(timbreFileWithInvoiceEntry); //<- Lo cargo como estring a  XmlDocument. ejemplo: <ejemplo></ejemplo>

//Nota para cargar Archivos XML se usara:

InvoiceTimbradoXml.Load(timbreFileWithInvoiceEntry); // Mi ruta de mi archivo: c:\\example.XML

 

Para integrar el nodo al archivo XML:

InvoiceTimbradoXml//Archivo XML en donde yo le voy a integrar la parte de la Addenda.

XmlNodeAddenda = InvoiceTimbradoXml.ImportNode(AddendaCanonOutPutNodeEntry, true); // Nodo en el cual guarde la información de la Addenda.

InvoiceTimbradoXml.DocumentElement.AppendChild(XmlNodeAddenda);//DocumentElement.AppendChild estoy indicando que se tiene que integrar en el ultimo Nodo.

 Ahora con el caso pero en lugar de ser un nodo le voy a pasar una cadena de caracteres:

InvoiceTimbradoXml.LoadXml(timbreFileWithInvoiceEntry); //Cargo la parte de la Addenda pero en “string”.

AddendaCanonOutPutNode = ListComprobanteItems[“cfdi:Addenda”];// AddendaCanonOutPutNode  tengo que capturar el nodo en una variable XmlNode.

 

XmlNodeAddenda = InvoiceTimbradoXml.ImportNode(AddendaCanonOutPutNode, true);//le paso el mismo parámetro.

Y al momento de intégraselo:

Me genera un error de Namespace a pesar de que es lo mismo.

Otro error que se me presento es que si integraba la información pero no las etiquetas de Addenda.

 

 

Bueno espero que se de utilidad, confió en que ustedes lectores encontraran formas mas optimas de integrar la Addenda a una factura electrónica.

Cualquier duda, comentario o experiencia con estos casos, por favor no duden en compartirlo.

 

saludos …
http://www.itixmih.wordpress.com
jemp_intrepido
jempdulintre
jemp_dulce

 

Anuncios

Nube de etiquetas

A %d blogueros les gusta esto: