Errore su XML non valido caratteri in Java

Il Parsing di un file xml in Java ricevo l’errore:

An invalid XML character (Unicode: 0x0) was found in the element content of the document.

Xml viene da un webservice.

Il problema è che mi esce l’errore solo quando il webservice è in esecuzione su localhost (windows+tomcat), ma non quando il webservice è online (linux+tomcat).

Come posso sostituire il carattere non valido??
Grazie.

InformationsquelleAutor Giancarlo | 2010-03-02



4 Replies
  1. 14

    Di caratteri Unicode 0x0 rappresenta NULL il che significa che i dati che si sta tirando contiene un valore NULL da qualche parte (che non è consentito in XML e quindi il tuo errore).

    Assicurarsi che scoprire che cosa causa il NULL in primo luogo.

    Anche, come stai interagendo con il WebService? Se si utilizza Asse, assicurarsi che il file WSDL è qualche tipo di codifica specificato per i dati.

    • +1 per un approccio di senso comune. Ciecamente di fissaggio ad un errore senza preoccuparsi di dove è venuto, non è una buona idea.
  2. 7

    risolto con questo codice:

    String cleanXMLString = null;
    Pattern pattern = null;
    Matcher matcher = null;
    pattern = Pattern.compile("[\\000]*");
    matcher = pattern.matcher(dirtyXMLString);
    if (matcher.find()) {
       cleanXMLString = matcher.replaceAll("");
    }
    • +1, ma può essere semplificato con dirtyXMLString.replaceAll("[\\000]*", "") però.
    • Può essere accelerato, anche cambiando il* per un +: dirtyXMLString.replaceAll("[\\000]+", "")
  3. 4

    Questo è un problema di codifica. O hai letto il inputstream come UTF8 e non è o l’altro senso intorno.

    Si dovrebbe specificare la codifica in modo esplicito quando si legge il contenuto. E. g. via

    new InputStreamReader(getInputStream(), "UTF-8")

    Un altro problema potrebbe essere il tomcat. Tenta di aggiungere URIEncoding=”UTF-8″ nella tua tomcat impostazioni del connettore in server.xml file. Perché:

    Si è scoperto che la JSP specifica dice che se la codifica della pagina di pagine JSP non è esplicitamente dichiarato, quindi ISO-8859-1 deve essere utilizzato (!).

    Preso da qui.

  4. -1

    Un po ‘ di ricerca intorno rivela che 0 x 0 è un carattere null, qualcun altro ha avuto lo stesso problema con XML e caratteri null qui http://forums.sun.com/thread.jspa?threadID=579849. Non sono sicuro di come si sono parsing di un XML, ma se si ottiene come una stringa prima c’è qualche discusion su come sostituire il null qui http://forums.sun.com/thread.jspa?threadID=628189.

    • -1 Quei link che sembra essere morto. Questo è il motivo per link-solo risposte sono scoraggiati.

Lascia un commento