O que a org.apache.xmlbeans.XmlException com uma mensagem de “elemento inesperado: CDATA” significa?
-
05-07-2019 - |
Pergunta
Eu estou tentando analisar e carregar um documento XML, porém eu estou recebendo essa exceção quando eu chamo o método de análise sobre a classe que estende XmlObject. Infelizmente, isso me dá nenhuma idéia de qual elemento é inesperado, que é o meu problema.
Eu não sou capaz de compartilhar o código para isso, mas eu posso tentar fornecer mais informações se necessário.
Solução
Não sendo capaz de dados de código de ação ou de entrada, você pode considerar a seguinte abordagem. Essa é uma abordagem muito comum dicotômica para diagnóstico , estou com medo, e na verdade você pode facilmente ter começado ...
Tente e reduzir o tamanho do XML de entrada através da remoção de partes do mesmo, garantindo que os restos de documentos XML subjacentes bem formados e possivelmente válida (se a validade é necessária a configuração do analisador). Se você manter a validade, isso pode exigir para alterar [a cópia] o esquema (DTD ou outro), como elementos manditory pode ser removido durante a abordagem cut-and-try ... BTW, a mensagem de erro parece sugerir mais em um problema de validação de que a questão básica afirmação de boa formação.
A menos que a pessoa tem uma intuição especial quanto à área que desencadeia a reclamação do analisador, que normalmente remover (ou re-add, quando as coisas começam a trabalhar) cerca de metade do que foi previamente cortado ou re-adicionado.
Você também pode começar com a tentativa de um arquivo quase vazio, para afirmar que o analisador funciona em todos ... Mais uma vez é a idéia de "dividir para prevalecer": é a questão na entrada XML ou no analisador? (Lembrando que poderia haver duas questões, uma na entrada e outra no analisador, e thtat tais questões poderiam mesmo ser alheios ...)
Desculpe a insistir técnicas de diagnóstico básicos que você pode muito bem ser fluente com ...
Outras dicas
Você deve verificar os argumentos que você está passando para o parse método (); Se você estiver passando diretamente uma corda para analisar ou arquivo ou inputStream conformidade (File / InputStream / String) etc.
A exceção é causada pelo comprimento do arquivo XML. Se você adicionar ou remover um caractere a partir do arquivo, o analisador será bem sucedida.
O problema ocorre dentro da 3ª biblioteca PiccoloLexer partido que XMLBeans depende. Ele foi corrigido na revisão 959.082, mas não tem sido aplicada a xbean 2,5 jar.
XMLBeans - Problema com arquivos XML se o comprimento é exatamente 8193bytes