Tengo unos 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>
Código:
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):XmlNode deleteContact = xmlDocument.SelectSingleNode("//Resource[@src='archivo1']"); deleteContact.ParentNode.RemoveChild(deleteContact);
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" />
Código PHP:
<Pepito atributo="valorCualquiera" />
A ver si me podéis echar una manito.
Gracias de antemano y salu2!!!!!