none
Ler determinado nó de um XML RRS feed

  • Pergunta

  • Boa Tarde.

     

    Tenho um XML em minha aplicação e preciso ler apenas 3 determinados nós, o valor deles, exemplo:

     

    <delivered>9</delivered>
    <bounces>0</bounces>
    <unique_opens>9</unique_opens>
    

    Quero pegar os valores que são: 9, 0 e 9.

    Como faço isso? Ler apenas 3 nós..

     

    Alguém pode me ajudar?

    Agradeço desde, já !

    Obrigado !

     


    segunda-feira, 11 de abril de 2011 18:21

Respostas

  • XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(mapPath + "/XML/arquivo.xml");
    
    XmlElement objElem = xmlDoc.DocumentElement;
    XmlNodeList objNode = null;
    
    objNode = objElem.GetElementsByTagName("delivered");
    string delivered = objNode[0].InnerText;
    
    objNode = objElem.GetElementsByTagName("bounces");
    string bounces = objNode[0].InnerText;
    
    objNode = objElem.GetElementsByTagName("unique_opens");
    string uniques = objNode[0].InnerText;
    

    <?xml version="1.0" encoding="utf-8" ?>
    <root>
     <delivered>9</delivered>
     <bounces>0</bounces>
     <unique_opens>9</unique_opens>
    </root>
    

    • Marcado como Resposta Progamador.C terça-feira, 12 de abril de 2011 12:19
    segunda-feira, 11 de abril de 2011 18:50
  • Certinho, Leandro. Muito obrigado !!
    • Marcado como Resposta Progamador.C terça-feira, 12 de abril de 2011 12:19
    terça-feira, 12 de abril de 2011 12:19

Todas as Respostas

  • Para ler todo o meu XML estou usando o seguinte código:

    while (xmlSendGrid.Read())
          {
            
            switch (xmlSendGrid.NodeType)
            {
              case XmlNodeType.Element:
                Console.Write("<" + xmlSendGrid.Name);
                Console.WriteLine(">");
                break;
              case XmlNodeType.Text:
                Console.WriteLine(xmlSendGrid.Value);
                break;
              case XmlNodeType.EndElement:
                Console.WriteLine("</" + xmlSendGrid.Name);
                Console.WriteLine(">");
                break;
            }
          }
          xmlSendGrid.Close();
    

    Porém, não quero meu XML inteiro.

     

     

    segunda-feira, 11 de abril de 2011 18:22
  •  string filePath = System.AppDomain.CurrentDomain.BaseDirectory.ToString();
        XmlDocument XmlReader = new XmlDocument();
        XmlNodeList NodeList;
        XmlReader.Load(filePath + "DadosEmail.xml");
        NodeList = XmlReader.SelectNodes("/maps/emailRH");
        remetente = NodeList.Item(0).ChildNodes.Item(0).Attributes.GetNamedItem("valor").Value;
        NodeList = XmlReader.SelectNodes("/maps/servidor");
        servidor = NodeList.Item(0).ChildNodes.Item(0).Attributes.GetNamedItem("valor").Value;
    

    Aqui eu utilizei assim.... e no xml esta desse jeito

    <?xml version="1.0" encoding="utf-8" ?>
    <maps>
      <servidor name="servidor">
      <object1 valor="servidordeemail"/>
     </servidor>
     <emailRH name="emailRH">
      <object1 valor="emailusuario"/>
     </emailRH>
    </maps>
    
    segunda-feira, 11 de abril de 2011 18:41
  • XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(mapPath + "/XML/arquivo.xml");
    
    XmlElement objElem = xmlDoc.DocumentElement;
    XmlNodeList objNode = null;
    
    objNode = objElem.GetElementsByTagName("delivered");
    string delivered = objNode[0].InnerText;
    
    objNode = objElem.GetElementsByTagName("bounces");
    string bounces = objNode[0].InnerText;
    
    objNode = objElem.GetElementsByTagName("unique_opens");
    string uniques = objNode[0].InnerText;
    

    <?xml version="1.0" encoding="utf-8" ?>
    <root>
     <delivered>9</delivered>
     <bounces>0</bounces>
     <unique_opens>9</unique_opens>
    </root>
    

    • Marcado como Resposta Progamador.C terça-feira, 12 de abril de 2011 12:19
    segunda-feira, 11 de abril de 2011 18:50
  • Certinho, Leandro. Muito obrigado !!
    • Marcado como Resposta Progamador.C terça-feira, 12 de abril de 2011 12:19
    terça-feira, 12 de abril de 2011 12:19