2016-06-01 12 views
0

javax.xml.transform Verwendung habe ich diese ISO-8859-1 Dokument, das zwei & # -encoded Zeichen enthält und :Dekodierung von Unicode-Zeichen in einem ISO-8859-1 codierten XML-Dokument

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xml>&#50108; and &#50102;</xml> 

Frage: wie wird ein standardkonformen XML-Reader interpretieren die 쎼 und 쎶,

  • ebenso wie die Ebene & # ... Saiten (nicht zu und umgewandelt zurück)
  • als und

Code, um das XML zu generieren:

public void testInvalidCharacter() { 
    try { 
     String str = "\uC3BC and \uC3B6"; // 쎼 and 쎶 
     System.out.println(str); 

     DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
     Document doc = builder.newDocument(); 
     Element root = doc.createElement("xml"); 
     root.setTextContent(str); 
     doc.appendChild(root); 

     DOMSource domSource = new DOMSource(doc); 

     Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
     transformer.setOutputProperty(OutputKeys.ENCODING, StandardCharsets.ISO_8859_1.name()); 

     StringWriter out = new StringWriter(); 
     transformer.transform(domSource, new StreamResult(out)); 

     System.out.println(out.toString()); 

    } catch (ParserConfigurationException | DOMException | IllegalArgumentException | TransformerException e) { 
     e.printStackTrace(System.err); 
    } 
} 

Antwort

1

Ein XML-Parser die '& # ...' erkennen Syntax entkommen und richtig zurückkehren 쎼 und 쎶 mit seiner API für den Text des Elements. Zum Beispiel In Java gibt die Methode org.w3c.dom.Element.getTextContent() für das Element mit dem Tag Name 'xml' einen String mit diesen Unicode-Zeichen zurück, obwohl Ihr XML-Dokument selbst ISO-8859-1

ist