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
- TXmlManager
Construtores
Propriedades
Métodos
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
Exemplo 1
#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
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas