TXMLManager adiciona um nó filho com outro namespace

Estou criando um xml com vários namespace. Estou precisando adicionar um nó filho que tem outro namespace, porém não achei como fazer isso.

O método XPathAddNode tem como adicionar um nó filho, mas não informa como fazer se o filho é de outro namespace.

Tentei assim mas não deu certo:

#include 'protheus.ch'
#include 'parmtype.ch'

user function tsttxml()
    Local nCont
    Local oXml    := TXMLManager():New()
    Local cXml    := ""
        cXml    += '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'
        cXml    += '<xdr:wsDr xmlns:xdr="http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">'
        cXml    += '</xdr:wsDr>'
    oXml:Parse(cXml)
    aNs    := oXml:XPathGetRootNsList()
    For nCont:=1 to Len(aNs)
        oXml:XPathRegisterNs( aNs[nCont][1], aNs[nCont][2] )
    Next

    ConOut(oXml:XPathAddNode( "/xdr:wsDr", "oneCellAnchor", "" ))                                //.T.
    ConOut(oXml:XPathAddNode(    "/xdr:wsDr/xdr:oneCellAnchor[last()]", "pic", "" ))                //.T.
    ConOut(oXml:XPathAddNode(    "/xdr:wsDr/xdr:oneCellAnchor[last()]/xdr:pic", "nvPicPr", "" ))    //.T.
    ConOut(oXml:XPathAddNode(    "/xdr:wsDr/xdr:oneCellAnchor[last()]/xdr:pic/xdr:nvPicPr", "cNvPicPr", "" ))    //.T.
    ConOut(oXml:XPathAddNode(    "/xdr:wsDr/xdr:oneCellAnchor[last()]/xdr:pic/xdr:nvPicPr/xdr:cNvPicPr", "a:picLocks", "" ))    //.T., Não dar certo, pois ele fica <xdr:a:picLocks/>
    ConOut(oXml:XPathAddAtt(    "/xdr:wsDr/xdr:oneCellAnchor[last()]/xdr:pic/xdr:nvPicPr/xdr:cNvPicPr/a:picLocks", "noChangeAspect", "1" ))    //.F.,Erro
    ConOut(oXml:Save2String())
return
compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do TOTVS DevForum!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags advpl txmlmanager namespace ou faça a sua própria pergunta.