elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Modificar archivo xml
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Modificar archivo xml  (Leído 4,001 veces)
DonnySantiago

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Modificar archivo xml
« en: 26 Agosto 2015, 19:04 pm »

Hola buen dìa,

Soy nuevo en esto , tengo un archivo .txt que tiene cierto contenido xml , como por ejemplo :
<nombre> Donny </nombre>
Pero hay casos que este archivo contiene etiquetas de contenido vacío como por ejemplo:
<Numero> </numero>
Mi duda es la siguiente , como haria para eliminar esas etiquetas de contenido vacío, claro esta que esas etiquetas pueden varias no solo será <Numero></Numero> , sino también aparecerán etiquetas como <Direccion></Direccion> que también tendrán contenido vacío.

Esto lo puedo realizar con algún programa que lo haga de manera automática , osea que reconozca el archivo que estará en una carpeta en especifica y lo modifique automáticamente.

Algo por ahí escuche del batch ? , se puede hacer con .net ?


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Modificar archivo xml
« Respuesta #1 en: 26 Agosto 2015, 23:23 pm »

con batch sería una locura hacerlo con .net seria programable... la cosa es que no vayas a romper alguna dependencia

es decir no sea algo como
Código:
<persona>
  <nombre>pepito</nombre>
  <apellido>palotes</apellido>
</persona>

en ese caso si nombre estuviera vacio y lo borras, te arriesgas a que el programa que use el xml tenga un fallo

con .net tendrías que hacer esa verificación


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
explorer

Desconectado Desconectado

Mensajes: 101


Analista/Programador Perl


Ver Perfil
Re: Modificar archivo xml
« Respuesta #2 en: 26 Agosto 2015, 23:25 pm »

Se puede hacer con un poco de Perl, desde la misma línea de comandos...

Código
  1. perl -E '$_ = do { local $/; open F, $ARGV[0]; <F> }; s{^\s*<(\w+)>\s*</\1>\s?\n}{}gm; print' code_38243.xml
(cambiando code_38243.xml por el nombre del archivo xml a procesar).

Con este archivo de entrada:
Código
  1. <data>
  2.  <meta>
  3.    <sender type="IMEI">400234062240570</sender>
  4.    <receiver type="E-mail Account">usuario@micorreo.com</receiver>
  5.    <time>2015-01-10T19:52:06Z</time>
  6.    <protocol>SBD</protocol>
  7.    <type>NAL GPS Report 6</type>
  8.    <Numero> </Numero>
  9.    <Direccion></Direccion>
  10.  </meta>
  11. </data>
el resultado es:
Código
  1. <data>
  2.  <meta>
  3.    <sender type="IMEI">400234062240570</sender>
  4.    <receiver type="E-mail Account">usuario@micorreo.com</receiver>
  5.    <time>2015-01-10T19:52:06Z</time>
  6.    <protocol>SBD</protocol>
  7.    <type>NAL GPS Report 6</type>
  8.  </meta>
  9. </data>
La misma solución, en forma de programa:
Código
  1. #!/usr/bin/perl
  2. $xml = do { local $/; open F, $ARGV[0]; <F> }; # leer nombre de archivo desde la línea de comandos
  3. $xml =~ s{^\s*<(\w+)>\s*</\1>\s?\n}{}gm; # quitar etiquetas sin contenido
  4. print $xml; # resultado
« Última modificación: 26 Agosto 2015, 23:52 pm por explorer » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Modificar archivo xml
« Respuesta #3 en: 27 Agosto 2015, 08:12 am »

Algo por ahí escuche del batch ? , se puede hacer con .net ?

.Net sería la mejor opción o al menos una de las mejores, al ser una solución amistosa, sencilla y extremadamente eficiente, ya que la librería de classes de .Net proporciona miembros muy sofisticados para el parsing y edición de documentos XML, cómo XElement, Xmlelement, XDoc, XmlDocument, etc, puediendo llevar a cabo la misma tarea de diversas maneras según "X" necesidades (con ciertas excepciones);
sin mencionar que además la IDE Visual Studio exprime al máximo sus elaboradas características añadiendo acceso inmediato en tiempo de diseño a los miembros del documento XML, con la posibilidad opcional de añadir/activar IintelliSense (auto completado de los nombres de los miembros del documento XML).

Sin duda la utiización de .Net junto a Visual Studio le da un significado nuevo y extraordinario a la manipulación programática o automatizada de este tipo de documentos, ya que Visual Studio marca un antes y un despues practicamente en todo lo relacionado con la experiencia proporcianada al usuario final en comparación con cualquier otra IDE para cualquier otro lenguaje, y aparte, la librería de classes de .Net Framework no tiene rival en cuanto a cantidad de miembros y a su calidad de elaboración (soy muy fan, tenía que escribir todo esto).

El código que te voy a mostrar de ejemplo es algo muy simple, ya que la tarea no requiere más, y de todas formas aquí no se piden tareas, pero bueno...:

Ejemplo, en VisualBasic.Net:
Código
  1. Dim sourceFilepath As String = "C:\source.xml"
  2. Dim targetFilepath As String = "C:\target.xml"
  3. Dim fileEncoding As Encoding = Encoding.Default 'Código de página ANSI del S.O. actual (cp1252 / windows-1252)
  4. Dim fileContent As String = File.ReadAllText(sourceFilepath, fileEncoding)
  5.  
  6. Dim doc As XDocument = XDocument.Parse(fileContent, LoadOptions.None)
  7. With doc
  8.    .Descendants().Where(Function(element As XElement) String.IsNullOrWhiteSpace(element.Value)).Remove()
  9.    .Save(targetFilepath, SaveOptions.None)
  10. End With
(declaré esas variables para que no te pierdas)

Documento original:
Código
  1. <?xml version="1.0" encoding="windows-1252"?>
  2. <rootElement>  
  3.  <!-- empty address field -->
  4.  <child1>
  5.    <name>X</name>
  6.    <adress></adress>
  7.  </child1>
  8.  <!-- empty element and sub-elements -->
  9.  <child2>
  10.    <name></name>
  11.    <adress></adress>
  12.  </child2>
  13. </rootElement>

Resultado de ejecución:
Código
  1. <?xml version="1.0" encoding="Windows-1252"?>
  2. <rootElement>
  3.  <!-- empty address field -->
  4.  <child1>
  5.    <name>X</name>
  6.  </child1>
  7.  <!-- empty element and sub-elements -->
  8. </rootElement>

Es un ejemplo. En caso de que lo uses ten en cuenta que puedes personalizarlo cómo prefieras, por ejemplo, si tienes elementos hijos con elementos sub-hijos y solo quieres eliminar los sub-hijos vacíos, entonces puedes indicar con una simple condiciónal, que se expresen los elementos hijos vacios en la modificación ( <elemento_hijo_vacio /> ).

PD: También puedes utilizar el módulo xml de Python, por poner un ejemplo diferente a C#/VB.Net.

Saludos
« Última modificación: 27 Agosto 2015, 09:45 am por Eleкtro » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
modificar un archivo .swf a dvd o vdc
Diseño Gráfico
magyta 1 3,814 Último mensaje 22 Mayo 2008, 00:59 am
por marlon_agz
MODIFICAR ARCHIVO .MDE
Programación Visual Basic
JUANSERRA 0 4,057 Último mensaje 5 Agosto 2008, 09:45 am
por JUANSERRA
Modificar un archivo TXT « 1 2 »
Programación C/C++
titofla 10 14,904 Último mensaje 2 Noviembre 2011, 04:55 am
por PiroskY
Modificar archivo exe « 1 2 3 »
Ingeniería Inversa
Tomy73 28 21,768 Último mensaje 1 Julio 2014, 00:29 am
por .:UND3R:.
Modificar un archivo sin corromperlo .bsp
Ingeniería Inversa
pikaboo 7 2,504 Último mensaje 11 Enero 2019, 22:53 pm
por MCKSys Argentina
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines