tenho meu código que uso o JAX-B para leitura de um arquivo XML que esta em um diretório especifico mas quando chega em determinada linha do código ele pula direta mento para a linha de erro :
a baixo esta o código que estou usando
public static void main(String[] args) throws JAXBException {
StringarquivoXML;arquivoXML="c:\\xml\\teste.xml";try{JAXBContextjaxbContext=JAXBContext.newInstance(Object.class);UnmarshallerjaxbUnmarshaller=jaxbContext.createUnmarshaller();FilelerNfe=newFile(arquivoXML);[b]ObjectFactorynfe=(ObjectFactory)jaxbUnmarshaller.unmarshal(lerNfe);[/b]System.out.println("lendo o arquivo XML"+nfe);}catch(Exceptionex){System.out.println("Error ao ler XML "+ex.getMessage());}}
quando ele chega nessa linha ObjectFactory nfe = (ObjectFactory) jaxbUnmarshaller.unmarshal(lerNfe);
ele pula para o erro alguém poderia me ajudar
org.xml.sax.SAXParseException: The markup in the document preceding the root element must be well-formed.
igrsantos
welinton19, abra o xml que está tentando converter no IE e veja se consegue ler.
parece que tem algum alguma tag com problema, ou conteúdo inválido.
welinton19
bom dia igrsantos obrigado pela atenção …
assim cara já tinha visto isso ontem anoite e mudei o XML
ai o erro mudou agora e esse:
Error ao ler XML javax.xml.bind.UnmarshalException: unexpected element (uri:“http://www.portalfiscal.inf.br/nfe”, local:“nfeProc”). Expected elements are (none)
ainda não sei o motivo …
desde já agradeço pela atenção …
igrsantos
welinton19, tem como postar o mapeamento da tua classe ?
dá uma olhada se não está faltando essa annotation:
welinton19
caro igrsantos
a minha classe e e basicamente isso que postei a cima.
essa
publicstaticvoidmain(String[]args)throwsJAXBException{StringarquivoXML;arquivoXML="C:/xml/53130211082913000110550010000000031000068023.xml";try{FilelerNfe=newFile(arquivoXML);JAXBContextjaxbContext=JAXBContext.newInstance(Object.class);UnmarshallerjaxbUnmarshaller=jaxbContext.createUnmarshaller();ObjectFactorynfe=(ObjectFactory)jaxbUnmarshaller.unmarshal(lerNfe);System.out.println("lendo o arquivo XML"+nfe);}catch(Exceptionex){System.out.println("Error ao ler XML "+ex);}}
a aonde poderia coloca essa conotação no meu código ?
igrsantos
esse é o problema,
dá uma lida nesse link que achei navegando na net aqui.
boa tarde galera depois de lutar com a leitura do XML conseguir não só ler o xml mais também pegar os dados
postarei o codigo aqui espero que possa ajudar valeu pala ajuda …
public static void main(String argv[]) {
try{FilefXmlFile=newFile("C:/xml/53130211082913000110550010000000031000068023.xml");DocumentBuilderFactorydbFactory=DocumentBuilderFactory.newInstance();DocumentBuilderdBuilder=dbFactory.newDocumentBuilder();Documentdoc=dBuilder.parse(fXmlFile);//optional, but recommended//read this - http://stackoverflow.com/questions/13786607/normalization-in-dom-parsing-with-java-how-does-it-workdoc.getDocumentElement().normalize();System.out.println("Elemento raiz :"+doc.getDocumentElement().getNodeName());NodeListnList=doc.getElementsByTagName("nfeProc");System.out.println("----------------------------");for(inttemp=0;temp<nList.getLength();temp++){NodenNode=nList.item(temp);System.out.println("\nCurrent Element :"+nNode.getNodeName());if(nNode.getNodeType()==Node.ELEMENT_NODE){ElementeElement=(Element)nNode;System.out.println("infNFe versao Id Name : "+eElement.getAttribute("versao"));System.out.println("chNFe Name : "+eElement.getElementsByTagName("chNFe").item(0).getTextContent());System.out.println("cUF Name : "+eElement.getElementsByTagName("cUF").item(0).getTextContent());System.out.println("cNF Name : "+eElement.getElementsByTagName("cNF").item(0).getTextContent());System.out.println("dhRecbto Name : "+eElement.getElementsByTagName("dhRecbto").item(0).getTextContent());System.out.println("Salary : "+eElement.getElementsByTagName("salary").item(0).getTextContent());;}}}catch(Exceptione){e.printStackTrace();}}
abraço
igrsantos
muito bom welinton19, marcar o tópico como resolvido
welinton19
igrsantos esta como favorito obrigado pela ajuda …