Composition Setup |
---|
import.css=/download/attachments/6062824/tecnologia.css
|
...
Pagetitle |
---|
| Classe TXmlManager |
---|
| Classe TXmlManager |
---|
|
A classe
...
TXMLManager representa um documento XML (Extensible Markup Language). Esta classe implementa partes dos modelos DOM (Document Object Model) nível 1 principal e o núcleo DOM nível 2.0, e XPATH (XML Path Language) versão 1.0.
Hierarquia
Construtores
Inclusão de trecho |
---|
| Classe TXmlManager - Construtores |
---|
|
...
| Classe TXmlManager - Construtores |
---|
nopanel | true |
---|
|
Propriedades
Inclusão de trecho |
---|
| Classe TXmlManager - Propriedades |
---|
|
...
| | Classe TXmlManager - Propriedades |
---|
nopanel | true |
---|
|
Métodos
Inclusão de trecho |
---|
| Classe TXmlManager - Métodos |
---|
|
...
| Classe TXmlManager - Métodos |
---|
nopanel | true |
---|
|
Observações
- DOM - Document Object Model (Modelo de Objetos de Documentos) - é uma representação de um documento XML em árvore na memória(cache) que permite a navegação e edição do documento.
- XPath - XML Path Language (Linguagem de Caminhos XML) é uma linguagem para localizar informações em um documento XML. XPath é usado para navegar através de elementos e atributos em um documento XML.
- Para obter mais informações dos modelos regulamentados pela W3C - World Wide Web Consortium, acesso o endereço: http://www.w3c.org.
- Além disso, essa classe possui diversos métodos tanto em sua implementação DOM e XPath para: Acesso, Alteração, Inclusão, Exclusão e Pesquisa de elementos do XML. Desta forma, para um boa compreensão sobre essa implementação de XML, é fundamental o entendimento da utilização de XPath e o conhecimento do XML para navegação com base no DOM.
Exemplos
Bloco de código |
---|
language | cpp |
---|
theme | Eclipse |
---|
title | Exemplo 1 |
---|
linenumbers | true |
---|
collapse | false |
---|
|
#include "protheus.ch"
user function tstXmlCls()
Local cXML := ""
Local oXML
Local xRet
Local nI := 0, nLen:= 0
Local lLoop := .T., lRet1 := .F., lRet2 := .F.
oXML := TXmlManager():New()
cXML := '<?xml version="1.0"?>' + CRLF
cXML += '<bookStore name="Saraiva" country="BR">' + CRLF
cXML += ' <foundation>' + CRLF
cXML += ' <founder>Seu Saraiva</founder>' + CRLF
cXML += ' <year>1914</year>' + CRLF
cXML += ' </foundation>' + CRLF
cXML += ' <books>' + CRLF
cXML += ' <book isNew="true">' + CRLF
cXML += ' <title>A Game of Thrones</title>' + CRLF
cXML += ' <author>George R. R. Martin</author>' + CRLF
cXML += ' <price>9.99</price>' + CRLF
cXML += ' <origin>US</origin>' + CRLF
cXML += ' </book>' + CRLF
cXML += ' <book isNew="true">' + CRLF
cXML += ' <title>A Clash of Kings</title>' + CRLF
cXML += ' <author>George R. R. Martin</author>' + CRLF
cXML += ' <price>9.99</price>' + CRLF
cXML += ' <origin>US</origin>' + CRLF
cXML += ' </book>' + CRLF
cXML += ' </books>' + CRLF
cXML += '</bookStore>' + CRLF
xRet := oXML:Parse( cXML )
if xRet == .F.
conout( "Error: " + oXML:Error() )
return
endif
while lLoop
conout( "Name: " + oXML:CNAME )
conout( "Path: " + oXML:CPATH )
conout( "Value: " + oXML:CTEXT )
xRet := oXML:DOMHasAtt()
if !xRet
conout( "No attributes" )
else
xRet := oXML:DOMGetAttArray()
nLen := Len( xRet )
conout( cValToChar( nLen ) + " attributes:" )
for nI := 1 to nLen
conout( "Attribute " + cValToChar( nI ) )
conout( "Name: " + xRet[nI][1] )
conout( "Value: " + xRet[nI][2] )
conout( "" )
next nI
endif
xRet := oXML:DOMHasNextNode()
conout( "Next node: " + IIf( xRet == .T., "Yes", "No" ) )
xRet := oXML:DOMHasPrevNode()
conout( "Previous node: " + IIf( xRet == .T., "Yes", "No" ) )
xRet := oXML:DOMHasParentNode()
conout( "Parent node: " + IIf( xRet == .T., "Yes", "No" ) )
xRet := oXML:DOMHasChildNode()
conout( "Children node: " + IIf( xRet == .T., "Yes", "No" ) )
xRet := oXML:DOMChildCount()
conout( "# of Children: " + cValToChar( xRet ) )
if oXML:DOMHasChildNode()
xRet := oXML:DOMChildNode()
elseif oXML:DOMHasNextNode()
xRet := oXML:DOMNextNode()
else
lRet1 := oXML:DOMParentNode()
if lRet1
lRet2 := oXML:DOMNextNode()
while !lRet2
lRet1 := oXML:DOMParentNode()
lRet2 := oXML:DOMNextNode()
if !lRet1 .And. !lRet2
return
endif
enddo
loop
else
conout( "Error not possible, once it came from a parent" )
return
endif
endif
if xRet == .F.
conout( "Error: " + oXML:Error() )
return
endif
enddo
return |