HOla de nuevo!!!
Vuelvo a tener problemas con las clases de XML en C#.
Resulta que tengo un código XML como el siguiente:
Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<Application xmlns="http://www.google.com">
<Region x="0" y="0" width="1920" height="1080" />
<Script src="archivo1" />
<Markup src="archivo2" />
<Resource src="archivo1" />
<Resource src="archivo2" />
</Application>
Por mi aplicación, necesito insertar y eliminar nodos del tipo <Resource>, es decir, de los 2 últimos. Para insertar (al final, por ejemplo), no tengo ningún problema ya que puedo clonar alguno de los <Resource>, modificarlo e insertarlo. Mi problema surge a la hora de eliminar un nodo <Resource> según su atributo
src. Si utilizo la expresión
Código:
XmlNode deleteContact = xmlDocument.SelectSingleNode("//Resource[@src='archivo1']");
deleteContact.ParentNode.RemoveChild(deleteContact);
Resulta que me sale una
NullReferenceException. He descubierto que esto sucede porque el nodo raíz <Application> tiene un namespace
xmlns="http://www.google.com". Si quito el namespace y pongo un atributo cualquiera o simplemente dejo el nodo <Application> sin atributos, el código anterior sí que borra correctamente el nodo (en este caso borraría <Resource src="archivo1" /> ). Para que funcione debo modificar el código XML de esta forma (o dejar <Application> sin atributos):
Código PHP:
<?xml version="1.0" encoding="utf-8"?>
<Application atributo="http://www.google.com">
<Region x="0" y="0" width="1920" height="1080" />
<Script src="archivo1" />
<Markup src="archivo2" />
<Resource src="archivo1" />
<Resource src="archivo2" />
</Application>
¿Cómo puedo borrar nodos si el nodo raíz tiene un namespace? Por cierto y dicho sea de paso, el código XML del principio lo cargo desde una plantilla, con lo cual no he creado el namespace yo mediante código.
Otra cosa que me gustaría saber es si hay alguna forma de cambiarle el nombre a un nodo (pasar de un nodo <nombre1 ... ... /> a tener un nodo <nombre2 ... ... />), sin tener que crear un nodo nuevo, simplemente modificando un nodo ya existente.
Lo mismo me gustaría hacerlo con los nombres de atributos. En resumen, si tengo:
Código PHP:
<Resource src="archivo1" />
me gustaría obtener, modificando este nodo, el nodo
Código PHP:
<Pepito atributo="valorCualquiera" />
.
A ver si me podéis echar una manito.
Gracias de antemano y salu2!!!!!