From e7bcfc18b72a8ab9ce82137eeb5bcf92f58466cd Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Fri, 27 Apr 2001 12:48:20 +0000 Subject: [PATCH] specify encoding for XmlLogger, handle TEXT Elements properly in DOMElementWriter. Submitted by: Stephane Bailliez git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@268982 13f79535-47bb-0310-9956-ffa450edef68 --- src/main/org/apache/tools/ant/XmlLogger.java | 8 ++++++-- .../apache/tools/ant/util/DOMElementWriter.java | 14 ++++++++++++-- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/org/apache/tools/ant/XmlLogger.java b/src/main/org/apache/tools/ant/XmlLogger.java index 96b9ea244..d9fb3f214 100644 --- a/src/main/org/apache/tools/ant/XmlLogger.java +++ b/src/main/org/apache/tools/ant/XmlLogger.java @@ -132,8 +132,12 @@ public class XmlLogger implements BuildListener { if (outFilename == null) { outFilename = "log.xml"; } - - Writer out = new FileWriter(outFilename); + + // specify output in UTF8 otherwise accented characters will blow + // up everything + Writer out = + new OutputStreamWriter(new FileOutputStream(outFilename), + "UTF8"); out.write("\n\n"); (new DOMElementWriter()).write(buildElement, out, 0, "\t"); out.flush(); diff --git a/src/main/org/apache/tools/ant/util/DOMElementWriter.java b/src/main/org/apache/tools/ant/util/DOMElementWriter.java index cc44790ab..2b520e8c8 100644 --- a/src/main/org/apache/tools/ant/util/DOMElementWriter.java +++ b/src/main/org/apache/tools/ant/util/DOMElementWriter.java @@ -67,7 +67,7 @@ import org.w3c.dom.*; * * @author The original author of XmlLogger * @author Stefan Bodewig - * @author Stephane Bailliez + * @author Stephane Bailliez */ public class DOMElementWriter { @@ -131,6 +131,9 @@ public class DOMElementWriter { break; case Node.TEXT_NODE: + out.write(encode(child.getNodeValue())); + break; + case Node.CDATA_SECTION_NODE: out.write(""); out.write(lSep); + out.flush(); } /** - * Escape <, & and " as their entities. + * Escape <, > & ' and " as their entities. */ public String encode(String value) { sb.setLength(0); @@ -183,6 +187,12 @@ public class DOMElementWriter { case '<': sb.append("<"); break; + case '>': + sb.append(">"); + break; + case '\'': + sb.append("'"); + break; case '\"': sb.append("""); break;