none
Consulta de como crear un XML RRS feed

  • Pregunta

  • Buen día!

    Soy nuevo creando archivos XML en C#, entonces para ver si me pueden ayudar con el problema que tengo.

    El caso es el siguiente:

    Debo consumir un web service y uno de los parametros es para enviar un XML, el parametro es un string.

    Cuando creo el XML y lo guardo en una carpeta especifica, este se genera bien, como se ve en la siguiente imagen:

    

    el problema es cuando guardo en una variable el string del XML para poder enviarlo al Web Service, el XML guarda esto: <?xml version=\"1.0\" encoding=\"UTF-8\"?>, me agrega los "\" y no se como quitarlos, ya que el web service me genera un error y no lee el XML.

    Este es el codigo que utilizó para crear el XML:

    doc = new XmlDocument();

                XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8",null);
                doc.AppendChild(docNode);

                //Nodo Raíz
                XmlNode DTENode = doc.CreateElement("DTE");
                XmlAttribute productsAttributes = doc.CreateAttribute("version");
                productsAttributes.Value = "2.0";
                DTENode.Attributes.Append(productsAttributes);
                doc.AppendChild(DTENode);

                //Nodo Document
                XmlNode DocumentNode = doc.CreateElement("Document");
                XmlAttribute productAttribute = doc.CreateAttribute("id");
                productAttribute.Value = "ID_1";
                DocumentNode.Attributes.Append(productAttribute);
                DTENode.AppendChild(DocumentNode);

                #region Header
                //Crear el nodo Header
                XmlNode HeaderNode = doc.CreateElement("Header");
                DocumentNode.AppendChild(HeaderNode);

                #region IdDoc
                XmlNode IdDocNode = doc.CreateElement("IdDoc");
                HeaderNode.AppendChild(IdDocNode);

                //carga los datos al XML
                this.CargaDatosIdDoc(pStrCodEmpresa, pStrNumFactura, pStrCodCliente, pStrTipoDocumento, IdDocNode);
                #endregion IdDoc

                #region Sender
                XmlNode SenderNode = doc.CreateElement("Sender");
                HeaderNode.AppendChild(SenderNode);

                //carga los datos al XML
                this.CargaDatosSender(pStrCodEmpresa, pStrNumFactura, pStrCodCliente, pStrTipoDocumento, SenderNode);
                #endregion Sender

                #region Receiver
                XmlNode ReceiverNode = doc.CreateElement("Receiver");
                HeaderNode.AppendChild(ReceiverNode);

                //carga los datos al XML
                this.CargaDatosReceiver(pStrCodEmpresa, pStrNumFactura, pStrCodCliente, pStrTipoDocumento, ReceiverNode);
                #endregion Receiver

                #region AmountSummary
                XmlNode AmountSummaryNode = doc.CreateElement("AmountSummary");
                HeaderNode.AppendChild(AmountSummaryNode);

                //carga los datos al XML
                this.CargaDatosAmountSummary(pStrCodEmpresa, pStrNumFactura, pStrCodCliente, pStrTipoDocumento, AmountSummaryNode);
                #endregion AmountSummary

                #endregion Header

                #region Detail
                //Crear el nodo Detail
                this.CargaDatosDetail(pStrCodEmpresa, pStrNumFactura, pStrCodCliente, pStrTipoDocumento, DocumentNode);
                #endregion Detail

                ////Crear el nodo Referenca
                //XmlNode ReferenceNode = doc.CreateElement("Reference");
                //DocumentNode.AppendChild(ReferenceNode);

                #region CAE
                //Crear el nodo CAE
                XmlNode CAENode = doc.CreateElement("CAE");
                DocumentNode.AppendChild(CAENode);

                //carga los datos al XML
                this.CargaDatosCAE(pStrCodEmpresa, CAENode);
                #endregion CAE


                //// Create and add another product node.
                //DocumentNode = doc.CreateElement("Extensions");


                DTENode.AppendChild(DocumentNode);

                doc.Save(@"C:\FacturaElectronica\XML\Tiquete.xml"); 
                
                return doc.OuterXml ;

    Espero haberme dado a entender y les agradezco cualquier ayuda que me puedan dar.

    Gracias!!

    jueves, 27 de septiembre de 2018 18:00

Respuestas

  • hola

    >>el XML guarda esto: <?xml version=\"1.0\" encoding=\"UTF-8\"?>, me agrega los "\" y no se como quitarlos, ya que el web service me genera un error y no lee el XML.

    eso lo observas asi porque estas conviertiendo el xml a string, no se como asignas este xml al web service pero no deberia causar problemas

    ademas sino quieres esto puedes no definirlo, solo intenta quitando el CreateXmlDeclaration

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 27 de septiembre de 2018 18:04
  • no se como invocas al web service, si es que tienes un proxy mediante una web reference o lo invocas directo usando HttpClient o WebClient

    pero la parte de la declaracion por lo general es opcional, al menos para probar si es ese el problema prueba no declararla

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 27 de septiembre de 2018 18:15

Todas las respuestas

  • hola

    >>el XML guarda esto: <?xml version=\"1.0\" encoding=\"UTF-8\"?>, me agrega los "\" y no se como quitarlos, ya que el web service me genera un error y no lee el XML.

    eso lo observas asi porque estas conviertiendo el xml a string, no se como asignas este xml al web service pero no deberia causar problemas

    ademas sino quieres esto puedes no definirlo, solo intenta quitando el CreateXmlDeclaration

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 27 de septiembre de 2018 18:04
  • Podría quitarlo esa parte, el problema es que si lo necesito para enviar el XML, yo cargo el XML a la variable de la siguiente forma:

    strXML = doc.OuterXml ;

    No se si debería hacerlo de una forma distinta?

    Gracias!!

    jueves, 27 de septiembre de 2018 18:12
  • no se como invocas al web service, si es que tienes un proxy mediante una web reference o lo invocas directo usando HttpClient o WebClient

    pero la parte de la declaracion por lo general es opcional, al menos para probar si es ese el problema prueba no declararla

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 27 de septiembre de 2018 18:15
  • Gracias!!
    jueves, 27 de septiembre de 2018 18:18