Guilherme's profileGuilherme de Carvalho Ca...PhotosBlogListsMore ![]() | Help |
|
February 06 Lendo arquivo XML com Xpath e XmlDocumentNesta semana me apareceu a necessidade de ler um arquivo XML, e não poderia utilizar DataSet ou DataTable para tal, aí desenvolvi este código para realizar o trabalho, visto que tinha que acessar além dos nós do XML atributos também. O Formato do arquivo XML é algo assim, reduzi o arquivo para melhorar o entendimento: <?xml version="1.0" encoding="utf-8"?>
<itens> <item id="cliente"> <nomecampo><![CDATA[Nome do cliente]]></nomecampo> <valorcampo><![CDATA[#$strnomecli]]></valorcampo> </item> <item id="funcionario"> <nomecampo><![CDATA[Nome do funcionário]]></nomecampo> <valorcampo><![CDATA[#$strnomefunc]]></valorcampo> <nomecampo><![CDATA[Matrícula Funcionário]]></nomecampo> <valorcampo><![CDATA[#$stromatfunc]]></valorcampo> </item> </itens> Abaixo o código que desenvolvi, para tratar estes requisitos: Dim xmlDocumento As XmlDocument = New XmlDocument 'Criando um objeto XmlDocumentDim strCaminho As String = Server.MapPath("~/App_Data/ItensAtributos.xml") 'Criando um objeto String para conter o caminho do arquivo XML xmlDocumento.Load(strCaminho) 'Carregando o arquivo XML para o objeto XmlDocumento Dim navegadorXml As System.Xml.XPath.XPathNavigator = xmlDocumento.CreateNavigator 'Criando um XpathNavigator baseado no xmlDocumento Dim listaCat As New List(Of cl_modelodocumento_dto) 'Criando uma lista genérica, que irá receber os dados da consulta ao Xml Dim itemCat As cl_modelodocumento_dto 'Instanciando um objeto do tipo modelodocumento_dto Dim xmlNo As XmlNode 'Criando um XmlNode Dim xmlListaNomeCampo, xmlListaValorCampo As XmlNodeList 'Criando dos objetos do tipo XmlNodeList, que vão percorrer os nós do Xml Dim strAtributo As String = String.Empty 'Criando uma string que irá receber o conteúdo dos atributos ID dos nós ITEM do arquivo XML, mostrado acima Try For Each xmlNo In xmlDocumento.SelectNodes("/itens/item") 'Percorrendo todos os nós ITEM contidos no arquivo XML itemCat = New cl_modelodocumento_dto 'Criando um novo objeto do tipo modelodocumento_dto With itemCat.titulo = xmlNo.SelectSingleNode("@id").Value.ToString 'Atribuindo o conteudo do atributo ID dos nós ITEM à propriedade titulo do objeto itemCat listaCat.Add(itemCat) 'Adicionando o itemCat à lista genérica de itemCat End With xmlListaNomeCampo = xmlNo.SelectNodes("nomecampo") 'Retornando o conteúdo do nó nomecampo para o xmlNodeList xmlListaNomeCampo xmlListaValorCampo = xmlNo.SelectNodes( "valorcampo") 'Retornando o conteúdo do nó valorcampo para o xmlNodeList xmlListaValorCampo Next Catch ex As Exception End TryEsta é a minha solução que encontrei para o problema, claro que outros desenvolvedores podem achar outras soluções melhores, ou piores de resolverem o problema. Caso você ache uma solução melhor e desejar compartilhar envia como comentário. |
|
|