none
Cómo sacar valores con split de un archivo txt RRS feed

  • Pregunta

  • Hola a todos. ¿Cómo puedo extraer el valor 27 juanito con split, de un archivo txt conformado con esta estructura:?

    <CODIGO_TRAMITE>27</CODIGO_TRAMITE>

    <NOMBRE_TRAMITE>juanito</NOMBRE_TRAMITE>

    viernes, 26 de junio de 2020 1:33

Respuestas

  • Alberto Poblacion, ya lo solucione y lo hice con 

    string[] stringSeparators = new string[] {""};

    string[] resul;

     resul = line.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

    Este fue mi método para solucionarlo;

                                                                               

     string[] lines = File.ReadAllLines("ruta archivo txt");


     string linea = string.Empty;
     foreach (string line in lines)
     {

     string[] stringSeparators = new string[] { "<CODIGO_TRAMITE>", "</CODIGO_TRAMITE>",
                                                                  "<NOMBRE_TRAMITE>", "</NOMBRE_TRAMITE>",
                                                                  "<CODIGO_TIPO_DOCUMENTAL>",

                                                                  "</CODIGO_TIPO_DOCUMENTAL>",
                                                                  "<NOMBRE_TIPO_DOCUMENTAL>",                                                                                                                "</NOMBRE_TIPO_DOCUMENTAL>",
                                                                  "<NOMB_DEP>","</NOMB_DEP>",
                                                                  "<NOMB_MUN>","</NOMB_MUN>",
                                                                  "<CC_PER>","</CC_PER>",
                                                                  "<DIRE_PER>","</DIRE_PER>",
                                                                  "<NOMB_PER>","</NOMB_PER>",
                                                                  "<PLACA>","</PLACA>",
                                                                  "<VIGENCIA>","</VIGENCIA>",
                                                                  "<OAVALUO>","</OAVALUO>",
                                                                  "<OIMPUESTO>","</OIMPUESTO>",
                                                                  "<DEUDA>","</DEUDA>",
                                                                  "<FECH_DOC>","</FECH_DOC>",
                                                                  "<RADI_DOC>","</RADI_DOC>"};
                    string[] resul;
                    resul = line.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

                    foreach (String item in resul)
                    {                    
                        Console.WriteLine(item);
                        Console.ReadKey();                    
                    }

                }

    viernes, 26 de junio de 2020 22:28

Todas las respuestas

  • hola

    Pero esos son tag de xml, no se usa ningun split

    Se supone que tienes un xml mas grande que solo esos tags sueltos entonces podrias aplicar un parse usando XmlDocument o quizas linq to xml

    XmlDocument.LoadXml(String) Method

    fijate el ejemplo del link como se puede cargar el xml y acceder a los nodos para obtener sus valores

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 26 de junio de 2020 3:52
  • ¿Cómo puedo extraer el valor 27 juanito con split, de un archivo txt conformado con esta estructura:?

    Bueno, el split no es precisamente lo más indicado para esa estructura, pero si te empeñas en usar un split puedes hacerlo así:

    string[] partes = linea.Split(new char[]{´'<','>'});

    string valor = partes[2];

    Si esto lo haces en todas las líneas, el valor será 27 en las líneas impares y juanito en las pares.

    viernes, 26 de junio de 2020 5:50
  • Esta es mi estructura completa del txt que debo sacar la información:

    NOTA: Así como esta debo extraerla.

    <CODIGO_TRAMITE>27</CODIGO_TRAMITE>
    <NOMBRE_TRAMITE>juanito</NOMBRE_TRAMITE>
    <CODIGO_TIPO_DOCUMENTAL>12</CODIGO_TIPO_DOCUMENTAL>
    <NOMBRE_TIPO_DOCUMENTAL>juanita</NOMBRE_TIPO_DOCUMENTAL>
    <NOMB_DEP>ANTI</NOMB_DEP><NOMB_MUN>BE</NOMB_MUN><CC_PER>705</CC_PER><DIRE_PER>CRA 69</DIRE_PER>
    <NOMB_PER>JUAN</NOMB_PER><PLACA>GQ04</PLACA>
    <VIGENCIA>2015</VIGENCIA><OAVALUO>9000</OAVALUO><OIMPUESTO>440</OIMPUESTO>
    <VIGENCIA>2016</VIGENCIA><OAVALUO>4000</OAVALUO><OIMPUESTO>450</OIMPUESTO>
    <VIGENCIA>2017</VIGENCIA><OAVALUO>2300</OAVALUO><OIMPUESTO>480</OIMPUESTO>
    <DEUDA>137000</DEUDA>
    <FECH_DOC>2019</FECH_DOC><RADI_DOC>001109</RADI_DOC>

    ¿O cual seria la mejor manera de extraer la información?

    viernes, 26 de junio de 2020 13:20
  • Alberto Poblacion, con su método del split me funciona pero solo con las 4 primeras lineas, con la linea 5 =<NOMB_DEP>ANTI</NOMB_DEP><NOMB_MUN>BE</NOMB_MUN><CC_PER>705</CC_PER> solo toma el valor ANTI pero no toma los valores BE 705. 

    ¿Como podría extraer esos valores?.

    viernes, 26 de junio de 2020 15:28
  • Ah, mi hipótesis era que todas las líneas eran similares a las que mostraste como ejemplo, por eso saca un único valor de cada línea usando partes[2]. Si puede haber líneas con más elementos, tienes que ir incrementando el índice de partes de 3 en 3 para sacar los siguientes valores: partes[2], partes[5], partes[8]...

    Usando partes.Length puedes determinar cuántos valores había en la línea, para saber dónde parar de incrementar el índice.

    Y sí, las cosas se van complicando. Por eso decíamos al principio que usar split no es precisamente el método más indicado para procesar un archivo de este tipo.

    viernes, 26 de junio de 2020 16:18
  • Alberto Poblacion, ya lo solucione y lo hice con 

    string[] stringSeparators = new string[] {""};

    string[] resul;

     resul = line.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

    Este fue mi método para solucionarlo;

                                                                               

     string[] lines = File.ReadAllLines("ruta archivo txt");


     string linea = string.Empty;
     foreach (string line in lines)
     {

     string[] stringSeparators = new string[] { "<CODIGO_TRAMITE>", "</CODIGO_TRAMITE>",
                                                                  "<NOMBRE_TRAMITE>", "</NOMBRE_TRAMITE>",
                                                                  "<CODIGO_TIPO_DOCUMENTAL>",

                                                                  "</CODIGO_TIPO_DOCUMENTAL>",
                                                                  "<NOMBRE_TIPO_DOCUMENTAL>",                                                                                                                "</NOMBRE_TIPO_DOCUMENTAL>",
                                                                  "<NOMB_DEP>","</NOMB_DEP>",
                                                                  "<NOMB_MUN>","</NOMB_MUN>",
                                                                  "<CC_PER>","</CC_PER>",
                                                                  "<DIRE_PER>","</DIRE_PER>",
                                                                  "<NOMB_PER>","</NOMB_PER>",
                                                                  "<PLACA>","</PLACA>",
                                                                  "<VIGENCIA>","</VIGENCIA>",
                                                                  "<OAVALUO>","</OAVALUO>",
                                                                  "<OIMPUESTO>","</OIMPUESTO>",
                                                                  "<DEUDA>","</DEUDA>",
                                                                  "<FECH_DOC>","</FECH_DOC>",
                                                                  "<RADI_DOC>","</RADI_DOC>"};
                    string[] resul;
                    resul = line.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);

                    foreach (String item in resul)
                    {                    
                        Console.WriteLine(item);
                        Console.ReadKey();                    
                    }

                }

    viernes, 26 de junio de 2020 22:28
  • hola

    >> ya lo solucione y lo hice con 

    disculpa que lo diga y sea sincero, es horrible esa solucion

    tienes un xml y parsea como hace 20 años cortando string, usa el poder de los parse para que sea mas simple, pero no vas por el peor de los camino

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    viernes, 26 de junio de 2020 23:30
  • Hola, no es un xml, es un txt y viene desordenado 
    lunes, 29 de junio de 2020 18:44