locked
Como Inserir dados em uma posição específica do XML RRS feed

  • Pergunta

  • Ola amigos, estou com uma dificuldade para manipular arquivos XML em C#, encontrei muitas coisas sobre leitura e escrita de arquivos XML, mas em nenhuma delas consegui achar o que eu gostaria. Meu problema é bem simples porém não consegui resolvê-lo.

    Suponham que eu já tenha um arquivo XML, e desejo inserir dados no final, ex :

    <bookstore>

    <book>

    <title>The Autobiography of Benjamin Franklin</title>

    <author>

    <first-name>Benjamin</first-name>

    <last-name>Franklin</last-name>

    </author>

    <price>8.99</price>

    </book>

    </bookstore>

    Desejo inserir um book no meu arquivo XML, resultando no seguinte arquivo :

    <bookstore>

    <book>

    <title>The Autobiography of Benjamin Franklin</title>

    <author>

    <first-name>Benjamin</first-name>

    <last-name>Franklin</last-name>

    </author>

    <price>8.99</price>

    </book>

    <book>

    <title>The Confidence Man</title>

    <author>

    <first-name>Herman</first-name>

    <last-name>Melville</last-name>

    </author>

    <price>11.99</price>

    </book>

    </bookstore>

    Alguém poderia me ensinar a fazer isso, desde já agradeço :) !

    sábado, 15 de agosto de 2015 17:01

Respostas

  • Utilize LINQ TO XML

    XPathSelectElement selecione os nós de bookstore.

    LastNode recupera o último nó de bookstore.

    AddAfterSelf insere um novo elemento após o nó.

    Exemplo:

     XDocument xdoc = XDocument.Parse(xml);
    
                xdoc.XPathSelectElement("bookstore").LastNode
                    .AddAfterSelf(new XElement("book",
                        new XElement("title", "Novo livro"),
                        new XElement("author",
                            new XElement("first-name", "Fulano"),
                            new XElement("last-name", "de Tal")),
                        new XElement("price", "1.99")));
    
                Debug.WriteLine(xdoc.ToString());



    ROBERTOSLJUNIOR

    • Marcado como Resposta Marcos SJ segunda-feira, 17 de agosto de 2015 18:26
    segunda-feira, 17 de agosto de 2015 18:13

Todas as Respostas

  • Bom dia Grabriel!

    Veja se te ajuda:

    http://www.c-sharpcorner.com/UploadFile/b8e86c/insert-update-delete-in-xml-file-using-C-Sharp/

    Já serve de base para o que precisa.


    " É Melhor ficar calado e parecer um Idiota do que Abrir a boca e dar toda a Certeza! "
    Developer
    Twitter: @JuniorGodLike
    Msn: deus_omelhor@hotmail.com

    segunda-feira, 17 de agosto de 2015 14:47
  • Utilize LINQ TO XML

    XPathSelectElement selecione os nós de bookstore.

    LastNode recupera o último nó de bookstore.

    AddAfterSelf insere um novo elemento após o nó.

    Exemplo:

     XDocument xdoc = XDocument.Parse(xml);
    
                xdoc.XPathSelectElement("bookstore").LastNode
                    .AddAfterSelf(new XElement("book",
                        new XElement("title", "Novo livro"),
                        new XElement("author",
                            new XElement("first-name", "Fulano"),
                            new XElement("last-name", "de Tal")),
                        new XElement("price", "1.99")));
    
                Debug.WriteLine(xdoc.ToString());



    ROBERTOSLJUNIOR

    • Marcado como Resposta Marcos SJ segunda-feira, 17 de agosto de 2015 18:26
    segunda-feira, 17 de agosto de 2015 18:13
  • Amigos estou tendo problemas em inserir um novo elemento dentro de um arquivo XML.

    A estrutura do XML é a seguinte:

    <Poses>
      <Pose id="1">
        <NomePose>ppp</NomePose>
        <Membros>
          <Membro nomeMembro="coluna">
            <X1>243</X1>
    <Y1>243</Y1> 
    <X2>243</X2>
    <Y2>243</Y2>
          </Membro>
        </Membros>
      </Pose>
    </Poses>

    Preciso inserir uma nova pose na ultima posição.

    domingo, 6 de março de 2016 19:18