none
¿Cómo agregar elementos a un documento XML? RRS feed

  • Pregunta

  • Hola…

    Lo que necesito es tomar un archivo .XML desde una ubicación en mi ordenador, y agregar nodos o elementos al final de este…

    ¿Cómo puedo hacerlo?


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    miércoles, 27 de diciembre de 2017 17:19

Respuestas

  • hola

    no te animas a realizar esto con linq xml ?

     Insert an xml element after specific node using LINQ to XML AddAfterSelf() method.

    la idea es que puedas seleccionar un element y en este agregar lo que necesites

    Adding Elements, Attributes, and Nodes to an XML Tree (C#)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina



    miércoles, 27 de diciembre de 2017 17:31
  • Hay varias formas de hacerlo:

    • Tratándolo como un String. Lees el fichero entero a un string, usas LastIndexOf para buscar la posición donde quieres insertar, y concatenas la parte anterior del string, más el bñoque de XML que quieras insertar (que será otro string) m´s la parte derecha del string original. Después salvas todo el string resultante en el archivo.
    • Usando la clase XmlDocument. Cargas el archivo en un objeto XmlDocument, buscas el nodo padre donde quieras hacer la inserción utilizando el método SelectNodes, y haces un Append del nuevo nodo. Después llamas al Save del XmlDocument para reescribir el fichero.
    • Usando XmlReader y XmlWriter. Esto es particularmente útil si el fichero es demasiado grande como para cargarlo en memoria. Vas leyendo el fichero original con un XmlReader, y por cada elemento que te vaya devolviendo lo grabas en otro archivo con el XmlWriter, salvo cuando llegues a la posición donde querías insertar, en que grabas el nuevo nodo y luego sigues copiando el resto. Al final, cierras los dos archivos, borras el antiguo, y renombras el nuevo al antiguo.
    • Usando XElement. Tiene la ventaja de que lo puedes manipular con Linq. Ya te han sugerido un enlace en otra respuesta anterior.
    miércoles, 27 de diciembre de 2017 18:17
    Moderador

Todas las respuestas

  • hola

    no te animas a realizar esto con linq xml ?

     Insert an xml element after specific node using LINQ to XML AddAfterSelf() method.

    la idea es que puedas seleccionar un element y en este agregar lo que necesites

    Adding Elements, Attributes, and Nodes to an XML Tree (C#)

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina



    miércoles, 27 de diciembre de 2017 17:31
  • Hay varias formas de hacerlo:

    • Tratándolo como un String. Lees el fichero entero a un string, usas LastIndexOf para buscar la posición donde quieres insertar, y concatenas la parte anterior del string, más el bñoque de XML que quieras insertar (que será otro string) m´s la parte derecha del string original. Después salvas todo el string resultante en el archivo.
    • Usando la clase XmlDocument. Cargas el archivo en un objeto XmlDocument, buscas el nodo padre donde quieras hacer la inserción utilizando el método SelectNodes, y haces un Append del nuevo nodo. Después llamas al Save del XmlDocument para reescribir el fichero.
    • Usando XmlReader y XmlWriter. Esto es particularmente útil si el fichero es demasiado grande como para cargarlo en memoria. Vas leyendo el fichero original con un XmlReader, y por cada elemento que te vaya devolviendo lo grabas en otro archivo con el XmlWriter, salvo cuando llegues a la posición donde querías insertar, en que grabas el nuevo nodo y luego sigues copiando el resto. Al final, cierras los dos archivos, borras el antiguo, y renombras el nuevo al antiguo.
    • Usando XElement. Tiene la ventaja de que lo puedes manipular con Linq. Ya te han sugerido un enlace en otra respuesta anterior.
    miércoles, 27 de diciembre de 2017 18:17
    Moderador