none
Lendo XML RRS feed

  • Pergunta

  • Galera como faço para ler um XML com a estrutura abaixo :

    <?xml version="1.0" encoding="UTF-8"?>
    <appSettings>
      <glossario>T:\Automacao\FVS 2.0\2.Arquitetura\Glossario_Lógico_Fisico_GLF</glossario>
      <relatorioExecucao>T:\Automacao\FVS 2.0\7.Relatórios</relatorioExecucao>
      <massaDados>
      </massaDados>
      <evidencia>T:\Automacao\FVS 2.0\5.Evidências\C1</evidencia>
      <browserIE>False</browserIE>
      <browserChrome>True</browserChrome>
      <browserFirefox>False</browserFirefox>
      <entradaCaracter>False</entradaCaracter>
      <timeOut>120</timeOut>
      <tentativaPagina>10</tentativaPagina>
      <especificacao>C:\Users\uilson.filho\Desktop\T&amp;M\teste</especificacao>
      <template>T:\Automacao\FVS 2.0\2.Arquitetura\Template\TemplateTelas.docx</template>
      <seleniumServer>Local</seleniumServer>
      <seleniumServerAddress>http://127.0.0.1:4444/wd/hud</seleniumServerAddress>
      <startSelenium>false</startSelenium>
      <intervaloSteps>0</intervaloSteps>
      <mouseFocus>false</mouseFocus>
      <isAtivaPrintComScroll>false</isAtivaPrintComScroll>
      <TemplateWordPorCenarios>True</TemplateWordPorCenarios>
      <TemplateWordTotal>False</TemplateWordTotal>
      <TemplateWordApenasPrints>False</TemplateWordApenasPrints>
      <nomeDeviceMobile>
      </nomeDeviceMobile>
      <nomePlataformaMobile>Android</nomePlataformaMobile>
    
     <console>
    	 <TestStories>
    		 <TestStory>
    			  <StoryName>Story 1</StoryName>
    			  <Priority>1</Priority>
    			  <PararExecucao>true</PararExecucao>
    		  <glf>C:\Teste</glf>
    		  <TestScenarios>
    			   <Scenario>
    					<ScenarioName>1</ScenarioName>
    					<PararExecucao>true</PararExecucao>
    					<DataDriven>c:\...</DataDriven>
    					<DataDrivenMode>Replace</DataDrivenMode>
    			   </Scenario>
    			   <Scenario>
    					<ScenarioName>2</ScenarioName>
    					<PararExecucao>true</PararExecucao>
    					<DataDriven>c:\...</DataDriven>
    					<DataDrivenMode>Replace</DataDrivenMode>    
    			   </Scenario>
    		  </TestScenarios>
    		 </TestStory>
    		 <TestStory>
    			  <StoryName>Story 1</StoryName>
    			  <Priority>1</Priority>
    			  <PararExecucao>true</PararExecucao>
    		  <glf>C:\Teste</glf>
    		  <TestScenarios>
    			   <Scenario>
    					<ScenarioName>1</ScenarioName>
    					<PararExecucao>true</PararExecucao>
    					<DataDriven>c:\...</DataDriven>
    					<DataDrivenMode>Replace</DataDrivenMode>
    			   </Scenario>
    		  </TestScenarios>
    		 </TestStory>  
    	 </TestStories>
     </console>
     
      </appSettings>

    Obrigado


    SirSmart

    terça-feira, 26 de setembro de 2017 13:48

Respostas

  • Nao é tao simples assim. O que voce tem que fazer é uma classe desta forma:

       /* 
        Licensed under the Apache License, Version 2.0
        
        http://www.apache.org/licenses/LICENSE-2.0
        */
    using System;
    using System.Xml.Serialization;
    using System.Collections.Generic;
    namespace Xml2CSharp
    {
    	[XmlRoot(ElementName="Scenario")]
    	public class Scenario {
    		[XmlElement(ElementName="ScenarioName")]
    		public string ScenarioName { get; set; }
    		[XmlElement(ElementName="PararExecucao")]
    		public string PararExecucao { get; set; }
    		[XmlElement(ElementName="DataDriven")]
    		public string DataDriven { get; set; }
    		[XmlElement(ElementName="DataDrivenMode")]
    		public string DataDrivenMode { get; set; }
    	}
    
    	[XmlRoot(ElementName="TestScenarios")]
    	public class TestScenarios {
    		[XmlElement(ElementName="Scenario")]
    		public List<Scenario> Scenario { get; set; }
    	}
    
    	[XmlRoot(ElementName="TestStory")]
    	public class TestStory {
    		[XmlElement(ElementName="StoryName")]
    		public string StoryName { get; set; }
    		[XmlElement(ElementName="Priority")]
    		public string Priority { get; set; }
    		[XmlElement(ElementName="PararExecucao")]
    		public string PararExecucao { get; set; }
    		[XmlElement(ElementName="glf")]
    		public string Glf { get; set; }
    		[XmlElement(ElementName="TestScenarios")]
    		public TestScenarios TestScenarios { get; set; }
    	}
    
    	[XmlRoot(ElementName="TestStories")]
    	public class TestStories {
    		[XmlElement(ElementName="TestStory")]
    		public List<TestStory> TestStory { get; set; }
    	}
    
    	[XmlRoot(ElementName="console")]
    	public class Console {
    		[XmlElement(ElementName="TestStories")]
    		public TestStories TestStories { get; set; }
    	}
    
    }
    

    att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    • Marcado como Resposta SirSmart quinta-feira, 28 de setembro de 2017 17:00
    quarta-feira, 27 de setembro de 2017 17:31
    Moderador

Todas as Respostas

  • Depende de qual informaçao voce quer obter.

    O XML é bem linear e voce nao deve ter problema em utilizar as funçoes nativas do .NET para tratamento de XML

    Voce pode adaptar o codigo deste artigo, por exemplo:

    http://csharp.net-tutorials.com/xml/reading-xml-with-the-xmlreader-class/

    att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    terça-feira, 26 de setembro de 2017 14:15
    Moderador
  • Minha dificuldade está sendo pegar nó dentro de nó e colocar dentro de uma coleção. Como posso fazer isso ?

    Obrigado


    SirSmart

    terça-feira, 26 de setembro de 2017 20:36
  • Poderia ser mais claro? O que voce deseja obter como resultado?( baseado no seu exemplo)

    Nos diga qual nó voce quer ler e qual o conteudo da coleçao... vai ser mais facil para nós criarmos um exemplo.

    Att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quarta-feira, 27 de setembro de 2017 16:16
    Moderador
  • O que eu preciso obter de resposta é uma coleção da seguinte forma:

    [0]console

       [0]TestStories

         [0]TestStory

             [0]StoryName

             [1]Priority

             [2]PararExecucao

                 [0]TestScenarios

                     [0]Scenario

                         [0]ScenarioName

                         [1]PararExecucao

                         [2]DataDriven

                         [3]DataDrivenMode

                    [1]Scenario

                         [0]ScenarioName

                         [1]PararExecucao

                         [2]DataDriven

                         [3]DataDrivenMode

    Não consigo fazer coleção coleção dentro de coleção. Como posso fazer isso ?

    Obrigado


    SirSmart

    quarta-feira, 27 de setembro de 2017 17:13
  • Nao é tao simples assim. O que voce tem que fazer é uma classe desta forma:

       /* 
        Licensed under the Apache License, Version 2.0
        
        http://www.apache.org/licenses/LICENSE-2.0
        */
    using System;
    using System.Xml.Serialization;
    using System.Collections.Generic;
    namespace Xml2CSharp
    {
    	[XmlRoot(ElementName="Scenario")]
    	public class Scenario {
    		[XmlElement(ElementName="ScenarioName")]
    		public string ScenarioName { get; set; }
    		[XmlElement(ElementName="PararExecucao")]
    		public string PararExecucao { get; set; }
    		[XmlElement(ElementName="DataDriven")]
    		public string DataDriven { get; set; }
    		[XmlElement(ElementName="DataDrivenMode")]
    		public string DataDrivenMode { get; set; }
    	}
    
    	[XmlRoot(ElementName="TestScenarios")]
    	public class TestScenarios {
    		[XmlElement(ElementName="Scenario")]
    		public List<Scenario> Scenario { get; set; }
    	}
    
    	[XmlRoot(ElementName="TestStory")]
    	public class TestStory {
    		[XmlElement(ElementName="StoryName")]
    		public string StoryName { get; set; }
    		[XmlElement(ElementName="Priority")]
    		public string Priority { get; set; }
    		[XmlElement(ElementName="PararExecucao")]
    		public string PararExecucao { get; set; }
    		[XmlElement(ElementName="glf")]
    		public string Glf { get; set; }
    		[XmlElement(ElementName="TestScenarios")]
    		public TestScenarios TestScenarios { get; set; }
    	}
    
    	[XmlRoot(ElementName="TestStories")]
    	public class TestStories {
    		[XmlElement(ElementName="TestStory")]
    		public List<TestStory> TestStory { get; set; }
    	}
    
    	[XmlRoot(ElementName="console")]
    	public class Console {
    		[XmlElement(ElementName="TestStories")]
    		public TestStories TestStories { get; set; }
    	}
    
    }
    

    att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    • Marcado como Resposta SirSmart quinta-feira, 28 de setembro de 2017 17:00
    quarta-feira, 27 de setembro de 2017 17:31
    Moderador
  • William não quero abusar, mas não estou conseguido juntar essa classe com o looping que estou fazendo no xml, poderia me ajudar por favor ?

    using (XmlReader xmlReader = new XmlTextReader(@"C:\XmlDocumentTest.xml"))
    {
        while (xmlReader.Read())
        {
            switch (xmlReader.NodeType)
            {
                case XmlNodeType.XmlDeclaration:
                    Console.WriteLine("Declaração: {0} - {1}", xmlReader.Name, xmlReader.Value);
                    break;
                case XmlNodeType.Element:
                case XmlNodeType.Comment:
                    Console.WriteLine("Elemento: {0} - {1}", xmlReader.Name, xmlReader.Value);
                    break;
                case XmlNodeType.Text:
                    Console.WriteLine("Texto: {0}", xmlReader.Value);
                    break;
            }
    
            if (xmlReader.HasAttributes)
            {
                while (xmlReader.MoveToNextAttribute())
                {
                    Console.WriteLine("Atributo: {0} - {1}", xmlReader.Name, xmlReader.Value);
                }
            }
        }
    }
    Esse seria o looping 

    Obrigado


    SirSmart

    quarta-feira, 27 de setembro de 2017 18:02