none
Como adicionar ChildNodes em um arquivo xmldocument? RRS feed

  • Pergunta

  • Olá,
    Meu arquivo xmldocument só possui 1 ChildNodes.

    Preciso então adicionar mais 3 ChildNodes nele.
    Estes novos ChildNodes devem ficar nas 3 primeiras posições do xml.

    Alguém sabe como posso fazê-lo?

    Obrigado


    k2rto4-Pb - Analista SharePoint

    quarta-feira, 18 de julho de 2012 12:24

Respostas

  • Olá Romy Moura,

    Só para lembrar o que preciso fazer:

    Tenho meu arquivo XML:

    <empresa>
      <funcionario>
        <id>10 </id>
        <nome>Frederico da Silva </nome>
        <idade>25 </idade>
        <cargo>Gerente Administrativo</cargo>
      </funcionario>
    </empresa>

    O que preciso fazer é adicionar novos ChildNodes nele.
    Segue exemplo:

    ChildNode 01

    <?xml version="1.0"?>

    ChildNode 02

    <arq-infoArq-file-attachment-arquivo>

    Com isso meu xml precisa ficar assim:

    <?xml version="1.0"?>
    <arq-infoArq-file-attachment-arquivo>
    <empresa>
      <funcionario>
        <id>10 </id>
        <nome>Frederico da Silva </nome>
        <idade>25 </idade>
        <cargo>Gerente Administrativo</cargo>
      </funcionario>
    </empresa>


    Para fazer isso temos duas soluções.
    Seguem as mesmas:

    1) Transforma o arquivo XmlDocument (XML) em string e então adicionar as linhas (childNodes) que faltam na mão.
     Isso pode ser visto neste post http://social.msdn.microsoft.com/Forums/pt-BR/504/thread/8828061f-1ecf-4d2d-a43b-1c7114d68ca2.

    2) Criar um novo XmlDocument e, primeiramente, adicionar os dois primeiros childNodes nele.
       Em seguida carregar o XmlDocument que possui o childNode que desejamos.
       Para isso faça:

       XmlDocument xmlCarregado = new XmlDocument();
       xmlCarregado.Load(@"C:\nomedoarquivo.xml");  

       Após importá-lo basta criar um novo XmlNode para receber este chldNode do XmlDocument carregado.
       Para isso faça:

       XmlNode nodeCopia = xmlDocumentCriadoAnteriormente.ImportNode(xmlCarregado.ChildNodes[NúmeroDoChildNodeDesejado], true);  

       Agora basta adicionar este childNode clonado no xmlDocumentCriadoAnteriormente.
       Para isso faça:

       xmlDocumentCriadoAnteriormente.AppendChild(nodeCopia);

    Obrigado pelas respostas.

    Abraços


    k2rto4-Pb - Analista SharePoint


    • Editado TI DEV quinta-feira, 19 de julho de 2012 13:41
    • Marcado como Resposta TI DEV quinta-feira, 19 de julho de 2012 13:41
    quinta-feira, 19 de julho de 2012 13:40

Todas as Respostas

  • Cara clique aqui tem um exemplo simples!

    att;

    quarta-feira, 18 de julho de 2012 13:27
  • Olá,

    Voce pode colar aqui para mim?

    Abs


    k2rto4-Pb - Analista SharePoint

    quarta-feira, 18 de julho de 2012 13:57
  • Cara salva o conteudo abaixo .xml.

    No caminho de sua preferencia.

    <empresa>
      <funcionario>
        <id>10 </id>
        <nome>Frederico da Silva </nome>
        <idade>25 </idade>
        <cargo>Gerente Administrativo</cargo>
      </funcionario>
    </empresa>

    Criar rotina de manipulação.

       void ManipularXml()
            {
                XmlDocument doc = new XmlDocument();
    
                //caminho fisico xml, No caminho de sua preferencia.
                string caminho = @"C:\nomedoarquivo.xml";
    
                //carrega xml
                doc.Load(caminho);
    
                //criar funcionario.
                XmlNode linha = doc.CreateElement("funcionario");
                XmlNode Id = doc.CreateElement("id");
                XmlNode Nome = doc.CreateElement("nome");
                XmlNode Idade = doc.CreateElement("idade");
                XmlNode Cargo = doc.CreateElement("cargo");
                Id.InnerText = "01";
                Nome.InnerText = "Romy Moura";
                Idade.InnerText = "26";
                Cargo.InnerText = "Analista Programador";
                linha.AppendChild(Id);
                linha.AppendChild(Nome);
                linha.AppendChild(Idade);
                linha.AppendChild(Cargo);
                doc.SelectSingleNode("/empresa").AppendChild(linha);
    
                XmlNode no;
                no = doc.SelectSingleNode(String.Format("/empresa/funcionario[id={0}]", 10));
                no.SelectSingleNode("./cargo").InnerText = "Gerente Administrativo";
                doc.Save(caminho);
            }

    Att;

    quarta-feira, 18 de julho de 2012 18:01
  • Olá Romy Moura,

    Só para lembrar o que preciso fazer:

    Tenho meu arquivo XML:

    <empresa>
      <funcionario>
        <id>10 </id>
        <nome>Frederico da Silva </nome>
        <idade>25 </idade>
        <cargo>Gerente Administrativo</cargo>
      </funcionario>
    </empresa>

    O que preciso fazer é adicionar novos ChildNodes nele.
    Segue exemplo:

    ChildNode 01

    <?xml version="1.0"?>

    ChildNode 02

    <arq-infoArq-file-attachment-arquivo>

    Com isso meu xml precisa ficar assim:

    <?xml version="1.0"?>
    <arq-infoArq-file-attachment-arquivo>
    <empresa>
      <funcionario>
        <id>10 </id>
        <nome>Frederico da Silva </nome>
        <idade>25 </idade>
        <cargo>Gerente Administrativo</cargo>
      </funcionario>
    </empresa>


    Para fazer isso temos duas soluções.
    Seguem as mesmas:

    1) Transforma o arquivo XmlDocument (XML) em string e então adicionar as linhas (childNodes) que faltam na mão.
     Isso pode ser visto neste post http://social.msdn.microsoft.com/Forums/pt-BR/504/thread/8828061f-1ecf-4d2d-a43b-1c7114d68ca2.

    2) Criar um novo XmlDocument e, primeiramente, adicionar os dois primeiros childNodes nele.
       Em seguida carregar o XmlDocument que possui o childNode que desejamos.
       Para isso faça:

       XmlDocument xmlCarregado = new XmlDocument();
       xmlCarregado.Load(@"C:\nomedoarquivo.xml");  

       Após importá-lo basta criar um novo XmlNode para receber este chldNode do XmlDocument carregado.
       Para isso faça:

       XmlNode nodeCopia = xmlDocumentCriadoAnteriormente.ImportNode(xmlCarregado.ChildNodes[NúmeroDoChildNodeDesejado], true);  

       Agora basta adicionar este childNode clonado no xmlDocumentCriadoAnteriormente.
       Para isso faça:

       xmlDocumentCriadoAnteriormente.AppendChild(nodeCopia);

    Obrigado pelas respostas.

    Abraços


    k2rto4-Pb - Analista SharePoint


    • Editado TI DEV quinta-feira, 19 de julho de 2012 13:41
    • Marcado como Resposta TI DEV quinta-feira, 19 de julho de 2012 13:41
    quinta-feira, 19 de julho de 2012 13:40