none
Aparece el atributo: xmlns="" , al agregar nuevo elemento RRS feed

  • Pregunta

  • Lenguaje de programación : Visual Basic 2005 (system.xml)

    Resulta que tengo un documento XML en un archivo llamado: Archivo.xml, cargo ese documento en un objeto XmlDocument, y deseo agregarle un nuevo elemento al final de sus nodos hijos.

    Documento.Load("C:\Archivo.xml")

    Para hacer lo anterior, creo un nuevo nodo de tipo XmlElement con determinado nombre y su respectivo valor. El código es el siguiente:

    NuevoElemento = Documento.CreateElement("OtroHijo")
    NuevoElemento .InnerText = "Este es mi hijo"
    Documento.DocumentElement.AppendChild(NuevoElemento)


    Finalmente guardo el resultado en un nuevo archivo. Entonces al abrir ese nuevo archivo es donde me doy cuenta que el nuevo nodo, efectivamente sí se agregó, pero fue añadido con el xmlns="" como si quisiera saber a qué espacio de nombre pertenece.

    Resultado:

    <?xml version="1.0" encoding="utf-8" ?>
    <NodoPapa xmlns="miespaciodenombre.com">
    <Primogenito>Hola soy el primogénito</Primogenito>
    <OtroHijo xmlns="" >   <-----Este es el atributo que me añade
    ....
    ....


    Mi pregunta: ¿Cómo le hago para que no aparezca este atributo?, ¿qué parámetro tengo que cambiar??

    Ya le busqué por todos lados, pero no he encontrado solución.

    Muchas gracias de antemano.
    I wanna help and learn, thanks.
    sábado, 24 de octubre de 2009 15:41

Respuestas

  • hola

    Creo qeue ste link explica exactamente lo que sucede y ademas te da la solucion al problema


    veras como el final hace


    string xmlStream = "<Root " + 
            "xmlns=\"http://blogs.microsoft.co.il/BLOGS/BaruchF\">"+ 
            "<Node />" + 
            "</Root>"; 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(xmlStream); 
    string namspaceURI = doc.ChildNodes[0].Attributes["xmlns"].Value; 
    XmlElement newNode = doc.CreateElement("Node", namspaceURI); 
    doc.ChildNodes[0].AppendChild(newNode); 

    o sea necesitas crear el nuevo elemento, pero agregando el uri del namespace para que no cree el atributo.
    es por eso que en ese código agregas la primeras lineas para desde el mismo xml poder saber el uri y utilizarlo en la creación de los nodos hijos

    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta HansByte lunes, 26 de octubre de 2009 16:03
    sábado, 24 de octubre de 2009 20:43

Todas las respuestas

  • hola

    Creo qeue ste link explica exactamente lo que sucede y ademas te da la solucion al problema


    veras como el final hace


    string xmlStream = "<Root " + 
            "xmlns=\"http://blogs.microsoft.co.il/BLOGS/BaruchF\">"+ 
            "<Node />" + 
            "</Root>"; 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(xmlStream); 
    string namspaceURI = doc.ChildNodes[0].Attributes["xmlns"].Value; 
    XmlElement newNode = doc.CreateElement("Node", namspaceURI); 
    doc.ChildNodes[0].AppendChild(newNode); 

    o sea necesitas crear el nuevo elemento, pero agregando el uri del namespace para que no cree el atributo.
    es por eso que en ese código agregas la primeras lineas para desde el mismo xml poder saber el uri y utilizarlo en la creación de los nodos hijos

    saludos

    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta HansByte lunes, 26 de octubre de 2009 16:03
    sábado, 24 de octubre de 2009 20:43
  • Muchas gracias por la información, en este mismo momento le echaré un vistazo y comento si salió todo bien.

    Gracias de nuevo
    Saludos desde México.
    I wanna help and learn, thanks.
    lunes, 26 de octubre de 2009 15:32
  • Excelente brother, ese era el problema, el espacio de nombre.

    Muchas gracias por la ayuda.
    Saludos hasta Argentina.

    Hansi
    Mérida, Yucatán. México

    I wanna help and learn, thanks.
    lunes, 26 de octubre de 2009 16:04