Usuário com melhor resposta
Lendo XML

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&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
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
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/
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". -
-
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". -
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
-
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
-
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