Olá Pessoal,
Queria um exemplo de como posso validar um arquivo XML usando o ParamBox.
Abaixo está as validações que preciso fazer.
- Validar se o arquivo existe;
- Validar se é um XML;
- Validar se é um XML de uma nota fiscal;
Tenho uma função que tem que fazer as validações
User function zParBox()
Local cError := ""
Local cWarning := ""
Local oXml := NIL
Local cXmlFile := "nfe.xml" // Arquivo XML
Local cDirect := GetTempPath()
//Se o arquivo existir
IF File(cDirect+cXmlFile)
//Gera o Objeto XML
oXml := XmlParserFile(cXmlFile,"_", @cError, @cWarning)
If (oXml == NIL )
MsgStop("Falha ao gerar Objeto XML : "+cError+" / "+cWarning)
Endif
// Mostrando a informação do Node
MsgInfo(oXml:_IDE:_cUFE:Text,"Cliente")
ENDIF
Return oXml
Eduarda, pelo que vi é porque você buscou o arquivo usando cDirect+cXmlFile e na hora de abrir usou só cXmlFile. Deve ter sido só isso.
Olá Cirilo, obrigada pelo toque, eu tenho uma dúvida, caso eu queira colocar um diretório diferente do Parser(system) do protheus. Exemplo:
Local cXmlFile := “nfe.xml”
Local cDirect := "D:\PastaXml"
If File(cDirect+cXmlFile)
Dessa forma vai funcionar?, ou o arquivo sempre tem que estar na pasta do Protheus?
Pode sim ser colocado qualquer diretório que o smartclient tenha acesso (se você estiver executando via smartclient). Agora se estiver executando via Job no appserver realmente somente as pastas dentro do Protheus_Data estarão acessíveis.
Ah entendi. Muito Obrigada,
Abraço.
Eduarda,
Para validar se um arquivo existe, você usa a função File
. Já para validar se é um XML, você pode efetuar o parse do arquivo via função XmlParserFile
. Por fim, para validar se é uma nota fiscal, você deverá validar o objeto que a função XmlParserFile
retornará, aqui já entraria regras de negócio que podem variar conforme sua lógica e necessidade.
Documentações:
https://tdn.totvs.com.br/display/tec/File
https://tdn.totvs.com.br/display/tec/XmlParserFile
Olá Daniel muito obrigada pela ajuda. teria algum exemplo simples que como posso fazer. eu usei exemplo do link do XmlParserFile porem no meu caso não retorna nada. vou mandar como está o código.