SELECIONAR TAG NO XML

MAXCIM 31/07/2011 21:40:33
#380463
Private Function LerNode(caminho As String) As String
Try
Dim Item As XmlNodeList
Item = DOCXml.SelectNodes([Ô]/[Ô] & caminho)
Return Item.Item(0).InnerText
Catch
Return [Ô][Ô]
End Try
End Function

DOCXml.Load(Arquivo)
Console.WriteLine(LerNode([Ô]retEnviNFe[Ô]))
Console.WriteLine(LerNode([Ô]retEnviNFe/tpAmb[Ô]))
Console.WriteLine(LerNode([Ô]retEnviNFe/xMotivo[Ô]))
Console.WriteLine(LerNode([Ô]retEnviNFe/infRec[Ô]))
Console.WriteLine(LerNode([Ô]retEnviNFe/infRec/nRec[Ô]))

caros Amigos,
Como faço para esse function acima funcionar? usei algo parecido no vb6 e funcionou perfeitamente.. já no vbnet tentei inumeras vezes e nada.

desde já agradeço
TECLA 01/08/2011 22:04:38
#380548
Posta um trecho do conteúdo do arquivo XML.
MAXCIM 02/08/2011 08:20:09
#380552
<retEnviNFe versao=[Ô]2.00[Ô]><tpAmb xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>2</tpAmb><verAplic xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>SP_NFE_PL_006h</verAplic><cStat xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>103</cStat><xMotivo xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>Lote recebido com sucesso</xMotivo><cUF xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>35</cUF><dhRecbto xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]>2011-06-16T17:01:04</dhRecbto><infRec xmlns=[Ô]http://www.portalfiscal.inf.br/nfe[Ô]><nRec>351000051493080</nRec><tMed>1</tMed></infRec></retEnviNFe>


Olá Tecla, acima o xml que gostaria de ler e obter os valores das tags.
Grato
LUIZCOMINO 02/08/2011 08:35:29
#380554
Olá amigo já deu uma olhada nesse link?
http://www.oficinadanet.com.br/artigo/2214/lendo_xml_com_vb.net
MAXCIM 02/08/2011 08:50:55
#380559
Olá Luizcommo, obrigado pela ajuda.

testei o código mencionado no link,
ele permite buscar pelo nome da tag apenas no primeiro nivel. o os childs são retornados pelo numero da posição.
há alguma maneira de fazer a busca pelo nome da TAG no 2ª e 3ª nivel?
LUIZCOMINO 02/08/2011 09:21:34
#380563
tente
-------------------


Private Sub LeXml()
Dim objXml As New XmlDocument
Dim CaminhoXml As String = [Ô]C:    este.xml[Ô]



objXml.Load(CaminhoXml)

Dim RazaoSocialRemetente As String = objXml.SelectSingleNode([Ô]//NomedaTag[Ô]).InnerText
Dim CodCidade As String = objXml.SelectSingleNode([Ô]//NomedaTag[Ô]).InnerText
Dim NumeroLote As String = objXml.SelectSingleNode([Ô]//NomedaTag[Ô]).InnerText
Dim CPFCNPJRemetente As String = objXml.SelectSingleNode([Ô]//NomedaTag[Ô]).InnerText

End Sub
PEGUDO 02/08/2011 09:33:05
#380565
Resposta escolhida
Pega este exemplo e veja se te ajuda
Repare que, para o código funcionar corretamente, as TextBoxes têm que ter, como padrão, seus nomes como TextBox mais o número
Exemplo: TextBox1, Textbox2, TextBox3... etc

Este exemplo é baseado no texto que você postou aqui no fórum
Desta forma, se o código lhe ajudou, adapte-o para seu programa, ok?

Espero ter ajudado.
MAXCIM 02/08/2011 09:36:07
#380567
Olá Luiz, mais uma vez, obrigado.

esse codigo só traz o 1º Nivel.
console.write(objXml.SelectSingleNode([Ô]//retEnviNFe[Ô]).InnerText)

e da erro se eu colocar os nomes das demiaus TAGs.
tentativas: mas sem resultado

console.write(objXml.SelectSingleNode([Ô]//retEnviNFe/xmotivo[Ô]).InnerText)
console.write(objXml.SelectSingleNode([Ô]//xmotivo[Ô]).InnerText)
console.write(objXml.SelectSingleNode([Ô]//retEnviNFe:xmotivo[Ô]).InnerText)

MAXCIM 02/08/2011 09:51:11
#380571
Olá pegudo, obrigado pelo envio do projeto. achei bem interessante.. como montou... ja serviu pra tirar uma base pra outras coisas que precisava..
mais ainda tenho um problema.
não ha mesmo como fazer uma busca direta pelo nome da TAG?
vou explicar pq ainda insisto nisso... acabei de fazer o envio do lote da nfe, recebo o XML do recibo, preciso estrair o numero do recibo e anexar aos mes processos...
todos os codigos que fazem a busca usando LOOP, não me dá uma com presisão o valor da TAG.

como eu mensionei no poste de abertura deste... usei um codigo simples no VB6, que funcionava legal... poque no vbnet 2010 ele não roda?
PEGUDO 02/08/2011 10:26:42
#380575
Cara eu te passei este exemplo dinâmico porque já aconteceu de um colega falar que o texto é padrão e não muda
aí depois de passar o projeto de exemplo, ele acaba falando que determinado campo ou caracter pode não estar presente.

Mas o código que você quer é este aí da figura
ele pega os valores pelo nome das tags

Espero ter ajudado
MAXCIM 02/08/2011 10:37:37
#380577
pegudo... Funcionou perfeitamente...

Obrigado a todos .
Tópico encerrado , respostas não são mais permitidas