Page 1 of 1

problema com a classe TXmlDocument

Posted: Tue Oct 23, 2012 9:05 am
by giba_f
[quote]
ola a todos...

estou usando a classe TXmlDocument para ler um arquivo.xml, que contem estrutura para montar o menu da app, mas estou com problema.

1) o menu app eh pra ficar mais ou menos assim:

Code: Select all

 
MENU_1                      MENU_2                      MENU_3                      MENU_4
------------------------    ------------------------    ------------------------    ------------------------
Opcao Menu_1
    Opcao Menu_1.1
    Opcao Menu_1.2
    Opcao Menu_1.3
        Opcao Menu_1.3.1
        Opcao Menu_1.3.2
    Opcao Menu_1.4
Opcao Menu_2
    Opcao Menu_2.1
    Opcao Menu_2.2
Opcao Menu_3
 
2) o arquivo.xml tem essa estrutura (para o menu acima):

Code: Select all

<Menu>
    <Titulo>MENU_1</Titulo>
    <MenuItem>
        <Titulo>Opcao Menu_1</Titulo>
        <MenuItem>
            <Titulo>Tabelas</Titulo>
            <Funcao>Opcao Menu_1.1</Funcao>
        </MenuItem>
        <MenuItem>
            <Titulo>Opcao Menu_1.2</Titulo>
            <Funcao>UdmA020</Funcao>
        </MenuItem>
        <MenuItem>
            <Titulo>Opcao Menu_1.3</Titulo>
            <MenuItem>
                <Titulo>Opcao Menu_1.3.1</Titulo>
                <Funcao>UdmA005</Funcao>
            </MenuItem>
            <MenuItem>
                <Titulo>Opcao Menu_1.3.2</Titulo>
                <Funcao>UdmA020</Funcao>
            </MenuItem>
        </MenuItem>
        <MenuItem>
            <Titulo>Opcao Menu_1.4</Titulo>
            <Funcao>LabA010</Funcao>
        </MenuItem>
    </MenuItem>
    <MenuItem>
        <Titulo>Opcao Menu_2</Titulo>
        <MenuItem>
            <Titulo>Opcao Menu_2.1</Titulo>
            <Funcao>LabA050</Funcao>
        </MenuItem>
        <MenuItem>
            <Titulo>Opcao Menu_2.2</Titulo>
            <Funcao>LabA050</Funcao>
        </MenuItem>
    </MenuItem>
    <MenuItem>
        <Titulo>Opcao Menu_3</Titulo>
        <Funcao>LabA050</Funcao>
    </MenuItem>
</Menu>
<Menu>
    <Titulo>MENU_1</Titulo>
</Menu>
<Menu>
    <Titulo>MENU_1</Titulo>
</Menu>
<Menu>
    <Titulo>MENU_1</Titulo>
</Menu>
 
estou utilizando os seguintes comandos:

Code: Select all

Local hFile    := FOpen( "Arquivo.Xml" ) 
Local oMnuXml  := TXmlDocument():New( hFile )
Local oXmlNode := oMnuXml:FindFirst("Menu")
Local oXmlIter := TXmlIterator():new( oXmlNode ) , oTagAtual
Do While .T.
    oTagAtual := oXmlIter:Next()
    If oTagAtual <> Nil
        ?  oTagAtual:cName , oTagAtual:cData
    Else
        Exit
    Endif
EndDo
 
Porem, o :Next() nao pega os q finalizam a tag, tipo </Menu> e o </MenuItem>, e teria q saber onde acaba cada menu e/ou menu item pra saber certo onde colocar os MENUITEM e os MENU...ENDMENU.

tambem tentei usar o oChild (e o oNext), mas daquele q estou (pode ser do Opcao Menu_1, ou Opcao Menu_1.3, ou qquer outro), vai sempre ate o final..

se alguem puder me ajudar, ficarei muito agradecido !

MUITO OBRIGADO

Gilberto Frohlich - Toledo/PR
giba_f@hotmail.com
giba_f@yahoo.com.br