Bonjour à tous.
Je suis en train de construire un document XML à partir d'un fichier Excel.
Le but de la manip est de permettre à mon soft d'aller chercher ses données dans un Excel Workbook en plus d'un "traditionnel" fichier XML.
Il faut reconnaître que pour l'utilisateur Lambda, c'est quand même nettement plus parlant et facile à utiliser.
Donc, dans un premier temps, je crée un String qui contient toutes mes balises XML, à partir du fichier Excel, et ensuite, j'envoie ce String à mon parser XML (SAX).
Le problème c'est que je viens de tomber sur un fichier Excel avec lequel ça ne marche pas ! (mais ça marche avec d'autres fichier Excel).
Si je récupère ma chaine XML et que je la colle dans un fichier XML, alors je peux l'ouvrir sans problème dans mon soft !!!
Voici les erreurs que j'obtiens en laissant faire la machine toute seule. Si quelqu'un y comprend quelque chose.
Envoyé par à priori pendant la lecture du fichier XLS
Et voici le code correspondant, pour mySoftXMLReaderEnvoyé par ma console
Les 3 warnings apparaissent juste avant l'affichage du flux XML, et les erreurs commencent à la ligne reader.parse(xmlInputSource); de ce fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 public void readXML(String inputXML) throws ProtocolException, IOException { inTree = false; inDeclarations = false; try { SAXParserFactory p = SAXParserFactory.newInstance(); p.setValidating(false); SAXParser parser = p.newSAXParser(); XMLReader reader = parser.getXMLReader(); reader.setContentHandler(this); ByteArrayInputStream xmlByteArrayInputStream = new ByteArrayInputStream(inputXML.getBytes()); InputSource xmlInputSource = new InputSource(xmlByteArrayInputStream); System.out.println("mySoftXMLReader.readXML.xmlString "+inputXML); reader.parse(xmlInputSource); // here the stream is parsed. } catch (ParserConfigurationException e) { D.p("readXML: " + e); e.printStackTrace(); D.p("readXML: throwing IOException"); throw new IOException(); } catch (SAXException e) { D.p("readXML: " + e); // e.getException().printStackTrace(); e.printStackTrace(); throw (ProtocolException) e.getException(); } catch (OutOfMemoryError e) { D.pd2("readXML: " + e); HandleMemory.showMessage(parent); readTFR_cancel(); // throws ProtocolException } }
Bref, avec un flux XML valide, je pense que lel soucis vient de ces 3 warning, et du Invalid byte 1 of 1-byte UTF-8 sequence.
Pour les warnings, j'ai trouvé une explication sur le net qui justifie l'erreur un #REF dans mes cellules, mais il n'y en a pas. Si quelqu'un a une autrer explication.
j'ai rien trouvé de vraiment concret sur Invalid byte 1 of 1-byte UTF-8 sequence.
Par avance, merci pour votre aide.
Partager