Ir para conteúdo
Fórum Script Brasil
  • 0

Localizando tags XML


Dayana Boni

Pergunta

Oi pessoal,

Eu tenho um arquivo XML com várias tags e níveis hierárquicos. Por programação, eu preciso verificar se há a existência de determinadas tags no XML passado, para decidir então o que o sistema irá fazer.

Tentando localizar a tag "REG", em VB fiz:

...

Dim nCT1Nivel As Integer

Set objNodes = objXMLDOM.selectNodes("Language/APOLICE/TB_APO/REG")

...

Mas não encontra.

Mesmo eu colocando apenas ...("Language/APOLICE/TB_APO/REG") quanto ...("Language/APOLICE/TB_APO/REG ID").

Editado por Dayana Boni
Link para o comentário
Compartilhar em outros sites

13 respostass a esta questão

Posts Recomendados

  • 0

Ta (:

Olha Leo:

Até onde entendi os códigos que fizeram, é usado um objeto FileSystemObject para acessar/ler as informações de dentro do XML.

O trecho que é responsável por receber o número de tags XML é:

Teste = LerInterno("Apolice", 0)

Como mostra, ela chama a função LerXML:

Function LerInterno(Opcao As String, Indice As Integer)

Dim NodeValue

Dim objNodes As IXMLDOMNodeList

Dim IndiceLocal As Integer

LerNoInterno = -1

Case "Apolices"

Set objNodes = objXMLDOM.selectNodes("Apolices/Apolice")

LerInterno = objNodes.length

Case "Parcelas"

Set objNodes = objXMLDOM.selectNodes("Apolices/Apolice").Item(Indice).selectNodes("Parcelas/Parcela")

LerInterno = objNodes.length

End Select

Exit Function

End Function

Alguns pontos:

- No caso, eu estou passando "Apolice" como parâmetro para a função. Esta tag existe no meu XML, porém ela contém atributos. Não sei se isso está fazendo com que ela não seja localizada;

- Se no primeiro Case eu trocar o techo "Set objNodes = objXMLDOM.selectNodes("Apolices/Apolice")" apenas para "Set objNodes = objXMLDOM.selectNodes("Apolices")" me é retornado um erro. Se mantenho como está, ele apenas não aponta haver apólices.

P.S.: Não coloquei os códigos no CODEBOX porque está dando erro.

Editado por Dayana Boni
Link para o comentário
Compartilhar em outros sites

  • 0

Tá.

O arquivo XML é deveras grande. Vou colocar aqui apenas o que interessa:

<?xml version="1.0" encoding="ISO-8859-1" ?>

<Apolices id_solicitacao="6" data_inicial="01/09/2011" data_final="13/09/2011" dt_processamento="14/09/2011 01:14:45" tempo="00:00:03" VersaoPrograma="4.0.14">

<Apolice ID="1" nr_apolice="3" cd_ramo=55252" nr_endosso_apo="0" cd_origem="6">

<cd_filial>059663</cd_filial>

<cd_grupo_ramo>05</cd_grupo_ramo>

<cd_ramo>31</cd_ramo>

<nr_apolice>3547532</nr_apolice>

<nr_endosso>0</nr_endosso>

<Parcelas total="6">

<Parcela ID="1">

<cd_filial>4113</cd_filial>

<cd_grupo_ramo>85855</cd_grupo_ramo>

</Parcelas>

</Apolice>

</Apolices>

Link para o comentário
Compartilhar em outros sites

  • 0

OK, quer contar então a quantidade de tags Apolice dentro de ApoliceS.

Set objNodes = objXMLDOM.selectSingleNode("Apolices")
Dim Quantidade As Integer

Quantidade = objNodes.childNodes.length
Ou manualmente:
Set objNodes = objXMLDOM.selectSingleNode("Apolices")
Dim Quantidade As Integer

For Each noFilho in objNodes.childNodes

  If noFilho.nodeName = "Apolice" Then Quantidade += 1

Next

estou enferrujadaço de VB6 (provavelmente alguma coisa na sintaxe ai tá errada), mas dá uma tentada :)

Link para o comentário
Compartilhar em outros sites

  • 0

Aaaa Leo

Sou uma topera :(

No VB6 eu teria que fazer manualmente, como a segunda opção que você colocou, mas tem uma coisa que está enroscando:

Não existe a propriedade childNodes, como você colocou "objNodes.childNodes" no For Each. As propriedades existentes para o objNodes, são:

item

lengtk

nextNode

reset

Testei com as três primeiras e não deu :(

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que você teria que fazer algo diferente então. Vou te passar a idéia e alguns objetos (realmente não lembro muita a sintaxe de VB6, sorry) e acho que com base nisso você vai conseguir manipular esses dados:

'Objeto do arquivo XML
Dim docXML As New DOMDocument
Dim objNodes As IXMLDOMNodeList

docXML.Load(caminhoDoSeuArquivoXML)

Case "Apolices"
   
    Set objNodes = docXML.getElementsByTagName("Apolices")
    LerInterno = objNodes.length

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...