LEITURA DE XML
Bom Dia a Todos.
recebo um xml de um webservice, e o coloco em uma varivel string, depois eu o transformo em um xml
Dim teste As String = System.Text.Encoding.ASCII.GetString(bytRetData)
Dim oXml As New Xml.XmlDocument
Dim strOrderNumber As String
oXml.LoadXml(teste)
até ai tudo bem, porem eu preciso pegar um texto desse xml
strOrderNumber = oXml.FirstChild.Item([Ô]/env:Envelope/env:Header/wsa:MessageID[Ô]).InnerText.ToString
mas me da um erro
An unhandled exception of type [ô]System.NullReferenceException[ô] occurred in WindowsApplication1.exe
Additional information: Object reference not set to an instance of an object.
nao sei o que fazer para arrumar isso, e nem aonde estou errando
recebo um xml de um webservice, e o coloco em uma varivel string, depois eu o transformo em um xml
Dim teste As String = System.Text.Encoding.ASCII.GetString(bytRetData)
Dim oXml As New Xml.XmlDocument
Dim strOrderNumber As String
oXml.LoadXml(teste)
até ai tudo bem, porem eu preciso pegar um texto desse xml
strOrderNumber = oXml.FirstChild.Item([Ô]/env:Envelope/env:Header/wsa:MessageID[Ô]).InnerText.ToString
mas me da um erro
An unhandled exception of type [ô]System.NullReferenceException[ô] occurred in WindowsApplication1.exe
Additional information: Object reference not set to an instance of an object.
nao sei o que fazer para arrumar isso, e nem aonde estou errando
1 - XML não é texto, é objeto serializado.
2 - O seu erro é que está tentando transformar em string um valor que está null
O correto seria algo como:
If oXml.FirstChild.Item([Ô]/env:Envelope/env:Header/wsa:MessageID[Ô]).InnerText <> Nothing Then
strOrderNumber = oXml.FirstChild.Item([Ô]/env:Envelope/env:Header/wsa:MessageID[Ô]).InnerText.ToString
else
strOrderNumber = [Ô][Ô]
End if
Agora considere seriamente em mudar sua visão quanto à XML, não o veja como um simples arquivo texto e sim como um objeto mesmo, daà a importância do entendimento da orientação à objeto. Existem várias maneiras de serializar um XML em um objeto de mesma estrutura, o que facilita EM MUITO a manipulação e leitura do mesmo.
2 - O seu erro é que está tentando transformar em string um valor que está null
O correto seria algo como:
If oXml.FirstChild.Item([Ô]/env:Envelope/env:Header/wsa:MessageID[Ô]).InnerText <> Nothing Then
strOrderNumber = oXml.FirstChild.Item([Ô]/env:Envelope/env:Header/wsa:MessageID[Ô]).InnerText.ToString
else
strOrderNumber = [Ô][Ô]
End if
Agora considere seriamente em mudar sua visão quanto à XML, não o veja como um simples arquivo texto e sim como um objeto mesmo, daà a importância do entendimento da orientação à objeto. Existem várias maneiras de serializar um XML em um objeto de mesma estrutura, o que facilita EM MUITO a manipulação e leitura do mesmo.
KERPLUNK
Obrigado pela resposta, porem não funcionou.
da o erro na primeira linha
An unhandled exception of type [ô]System.NullReferenceException[ô] occurred in WindowsApplication1.exe
Additional information: Object reference not set to an instance of an object
Infelizmente, foi solicitado para que eu fizesse assim, não tenho muita escolha para mudar essa rotina, ainda mais que tenho uma semana de trabalho.
Obrigado pela resposta, porem não funcionou.
da o erro na primeira linha
An unhandled exception of type [ô]System.NullReferenceException[ô] occurred in WindowsApplication1.exe
Additional information: Object reference not set to an instance of an object
Infelizmente, foi solicitado para que eu fizesse assim, não tenho muita escolha para mudar essa rotina, ainda mais que tenho uma semana de trabalho.
Há uns dias atras tive duvida parecida com a sua
Comigo tambem apareceu essa mensagem
No meu caso o erro estava nessa linha
txtFornecedor.Text = xmlDoc.SelectSingleNode([Ô]//nfe:infNFe/nfe:emit/nfe:xNome[Ô], ns).InnerText (Aqui estava assim ...([Ô]//nfe:infNFe/nfe:xNome[Ô], ns).InnerText
Abaixo como ficou (RESOLVIDO)
Dim xmlDoc As New XmlDocument
xmlDoc.Load(strNomeArquivo) LOCAL DO ARQUIVO
Dim ns As New XmlNamespaceManager(xmlDoc.NameTable)
ns.AddNamespace([Ô]nfe[Ô], [Ô]http://www.portalfiscal.inf.br/nfe[Ô])
txtFornecedor.Text = xmlDoc.SelectSingleNode([Ô]//nfe:infNFe/nfe:emit/nfe:xNome[Ô], ns).InnerText AQUI PEGO A RAZAO SOCIAL
txtEndereco.Text = xmlDoc.SelectSingleNode([Ô]//nfe:infNFe/nfe:emit/nfe:enderEmit/nfe:xLgr[Ô], ns).InnerText AQUI PEGO O ENDERECO
O meu tópico é esse
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=405652&varWorld=
Comigo tambem apareceu essa mensagem
No meu caso o erro estava nessa linha
txtFornecedor.Text = xmlDoc.SelectSingleNode([Ô]//nfe:infNFe/nfe:emit/nfe:xNome[Ô], ns).InnerText (Aqui estava assim ...([Ô]//nfe:infNFe/nfe:xNome[Ô], ns).InnerText
Abaixo como ficou (RESOLVIDO)
Dim xmlDoc As New XmlDocument
xmlDoc.Load(strNomeArquivo) LOCAL DO ARQUIVO
Dim ns As New XmlNamespaceManager(xmlDoc.NameTable)
ns.AddNamespace([Ô]nfe[Ô], [Ô]http://www.portalfiscal.inf.br/nfe[Ô])
txtFornecedor.Text = xmlDoc.SelectSingleNode([Ô]//nfe:infNFe/nfe:emit/nfe:xNome[Ô], ns).InnerText AQUI PEGO A RAZAO SOCIAL
txtEndereco.Text = xmlDoc.SelectSingleNode([Ô]//nfe:infNFe/nfe:emit/nfe:enderEmit/nfe:xLgr[Ô], ns).InnerText AQUI PEGO O ENDERECO
O meu tópico é esse
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=405652&varWorld=
Tópico encerrado , respostas não são mais permitidas