Foros del Web » Programación para mayores de 30 ;) » .NET »

Sobreescribir atributo de XML

Estas en el tema de Sobreescribir atributo de XML en el foro de .NET en Foros del Web. Hola estimados, me han surgido algunos detalles y problemas con el manejo de XML el cual me cuesta un poco de trabajo, el problema es ...
  #1 (permalink)  
Antiguo 16/04/2009, 06:06
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Sobreescribir atributo de XML

Hola estimados, me han surgido algunos detalles y problemas con el manejo de XML el cual me cuesta un poco de trabajo, el problema es el siguiente:

Tengo un archivo XML con la siguiente estructura:

Código:
<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
  <Aplicacion id="1" activa="0" titulo="calculadora">calc.exe</Aplicacion>
  <Aplicacion id="2" activa="1" titulo="notepad">notepad.exe</Aplicacion>
  <Aplicacion id="3" activa="0" titulo="Paint">mspaint.exe</Aplicacion>
  <Aplicacion id="4" activa="1" titulo="PishaReal">c:\pisha\hna.ae.wf.exe.exe</Aplicacion>
  </appSettings>

lo que necesito realizar es cambiar el atributo "activa" a 0 en todos los id's, pero no logro ese cometido, yo tengo un For Each el cual me permite tomar los nodos de "appSettings"

For Each buscarApp As XmlNode In aplicaciones.ChildNodes

y obtengo cada uno de esos nodos y cambio el valor del atributo:

buscarApp.Attributes("activa").Value = "0"


pero de aquí no hayo como guardar ese cambio y que quede ya establecido en el archivo, he leído con el XMLWRITER pero el archivo ya lo tengo cargado con un XMLDOCUMENT, como podría yo modificarlo sin necesidad de desconectarme o descargar el archivo xml del XMLDOCUMENT.
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #2 (permalink)  
Antiguo 16/04/2009, 08:35
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Sobreescribir atributo de XML

Puedes usar el método Save de la clase XmlDocument que tiene como parámetro el nombre del archivo.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 16/04/2009, 09:13
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Respuesta: Sobreescribir atributo de XML

Hola David, el problema esta en que el archivo lo tengo abierto con esa misma clase:

hago esto:

Código:
        Dim archivoProcesos As New XmlDocument

        archivoProcesos.Load("a.xml") 'obtenemos archivo de aplicaciones

.
.'hago una serie de procesos
.

        archivoProcesos.save(ruta) 'en este caso ruta es el archivo a.xml
Pero me da un error de acceso, por que el archivo ya lo estoy leyendo y por lo tanto no puedo modificarlo.
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #4 (permalink)  
Antiguo 16/04/2009, 09:44
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Sobreescribir atributo de XML

Es raro, yo probé con el XmlDocument abrir, modificar el archivo y guardarlo con el mismo nombre, y no me dió problemas.

¿Estás usando el XmlDocument o estás leyendo el archivo con otra clase?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 17/04/2009, 01:41
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Respuesta: Sobreescribir atributo de XML

Cita:
Iniciado por David el Grande Ver Mensaje

¿Estás usando el XmlDocument o estás leyendo el archivo con otra clase?
Hola de nuevo David, ya encontré el detalle de mis 48 horas de angustia, el problema es que en la empresa (que es donde tengo que modificar el XML) se encuentran usando Tem Foundation Server y el XML que quiero modificar se encuentra en una ruta distinta, y por lo tanto el archivo es de solo lectura, de eso me percate ayer que cree una solución fuera del proyecto compartido y me ha funcionado, gracias por tu ayuda.
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
  #6 (permalink)  
Antiguo 17/04/2009, 06:41
Avatar de erick_arcini  
Fecha de Ingreso: julio-2005
Ubicación: Jaltenco / DF
Mensajes: 1.723
Antigüedad: 18 años, 9 meses
Puntos: 50
Respuesta: Sobreescribir atributo de XML

Les dejo aquí, algo que supongo varios deben de saber, pero que era por lo que me estaba peleando y por fin quedo ya mi aplicación concluida, si ustedes necesitan modificar un archivo cuando este es de solo lectura, solo cambien su atributo y listo.

Código vb:
Ver original
  1. If IO.File.GetAttributes(archivo) = IO.FileAttributes.ReadOnly Then
  2.             IO.File.SetAttributes(archivo, IO.FileAttributes.Normal)
  3.             x = True 'bandera boleana
  4. End If
y cuando acaben el proceso regresenlo a su estado original:

Código vb:
Ver original
  1. If IO.File.GetAttributes(archivo) = IO.FileAttributes.ReadOnly And x Then
  2.             IO.File.SetAttributes(archivo, IO.FileAttributes.Normal)
  3. End If
__________________
Mejoremos nuestro país, ayudemos al planeta... próximamente.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 01:11.