none
¿Detectar varios tag en una cadena XML? RRS feed

  • Pregunta

  • Hola, Buenas tengo una duda.

    Tengo que detectar una detalle de una cadena XML pero este detalle me estara llegando varias veces de la siguiente manera:

    <detalle_timbre><denominacion><codigo><![CDATA[3]]></codigo><valor_unitario><![CDATA[10.00]]></valor_unitario><cantidad>1</cantidad><rango_inicial>104950</rango_inicial><rango_final>104950</rango_final><total><![CDATA[10.00]]></total></denominacion><denominacion><codigo><![CDATA[4]]></codigo><valor_unitario><![CDATA[20.00]]></valor_unitario><cantidad>1</cantidad><rango_inicial>227290</rango_inicial><rango_final>227290</rango_final><total><![CDATA[20.00]]></total></denominacion><denominacion><codigo><![CDATA[5]]></codigo><valor_unitario><![CDATA[50.00]]></valor_unitario><cantidad>1</cantidad><rango_inicial>142300</rango_inicial><rango_final>142300</rango_final><total><![CDATA[50.00]]></total></denominacion></detalle_timbre>

    Para detectar tengo lo siguiente:

    <detalle_timbre> denominacion> <codigo><![CDATA[]]><codigo> <valor_unitario><![CDATA[]]><valor_unitario> <cantidad><cantidad> <rango_inicial><rango_inicial> <rango_final><rango_final> <total><![CDATA[]]><total> </denominacion> </detalle_timbre>

    como podria hacerlo para que me detectara varias veces la misma linea.(Auque cuantas veces me venga la linea, no se sabe eso depende de la informacion que me envie el cliente, puede ser una o tres o diez)

    es para un servicio web (WebService) estoy trabajandolo en c#

    por cierto creo esta clase para el manejo de la linea

    [System.Xml.Serialization.XmlRoot("denominacion")]
        public class denominacion
        {
            public CDATA codigo;
            public CDATA valor_unitario;
            public string cantidad;
            public string rango_inicial;
            public string rango_final;
            public CDATA total;
        }

    alquien me podria ayudar???


    Wixo

    miércoles, 15 de enero de 2014 0:24

Respuestas

  • Quizá la forma más sencilla sea usar la serialización XML. Añade a tu código una clase que se llame detalle_timbre y que sea un List<denominacion>. Y después usa un XmlSerializer para deserializar detalle_timbre pasándole el XML.

    Si eso no te gusta, otra opción es usar un XmlDocument, cargarlo con el XML, y dentro extraer los nodos buscados mediante un XPATH:

    XmlNodeColection xnc = doc.SelectNodes("//denominacion");

    Después recorres xnc con un bucle y vas usando SelectSingleNode para sacar codigo, valor_unitario, etc.

    • Marcado como respuesta Wixo-GTF jueves, 16 de enero de 2014 14:49
    miércoles, 15 de enero de 2014 6:36

Todas las respuestas

  • Quizá la forma más sencilla sea usar la serialización XML. Añade a tu código una clase que se llame detalle_timbre y que sea un List<denominacion>. Y después usa un XmlSerializer para deserializar detalle_timbre pasándole el XML.

    Si eso no te gusta, otra opción es usar un XmlDocument, cargarlo con el XML, y dentro extraer los nodos buscados mediante un XPATH:

    XmlNodeColection xnc = doc.SelectNodes("//denominacion");

    Después recorres xnc con un bucle y vas usando SelectSingleNode para sacar codigo, valor_unitario, etc.

    • Marcado como respuesta Wixo-GTF jueves, 16 de enero de 2014 14:49
    miércoles, 15 de enero de 2014 6:36
  • No lo sabia que se podia hacer eso asi que probare y te contare. Gracias.

    Wixo

    miércoles, 15 de enero de 2014 14:59
  • Gracias. Me funciono lo del XML Documento


    Wixo


    • Editado Wixo-GTF jueves, 16 de enero de 2014 14:53
    jueves, 16 de enero de 2014 14:52