summaryrefslogtreecommitdiff
path: root/java/src/IceGridGUI/XMLWriter.java
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2006-03-31 04:31:07 +0000
committerBernard Normier <bernard@zeroc.com>2006-03-31 04:31:07 +0000
commitb99e44c5374710b3dfe86800e8488baa425e1862 (patch)
tree6d9b9c512ba0f5c5e7b15ccdc40db2bf2dad9673 /java/src/IceGridGUI/XMLWriter.java
parentAdded --server option to icegridadmin (diff)
downloadice-b99e44c5374710b3dfe86800e8488baa425e1862.tar.bz2
ice-b99e44c5374710b3dfe86800e8488baa425e1862.tar.xz
ice-b99e44c5374710b3dfe86800e8488baa425e1862.zip
Added ability to read XML file by execing icegridadmin
Diffstat (limited to 'java/src/IceGridGUI/XMLWriter.java')
-rwxr-xr-xjava/src/IceGridGUI/XMLWriter.java61
1 files changed, 56 insertions, 5 deletions
diff --git a/java/src/IceGridGUI/XMLWriter.java b/java/src/IceGridGUI/XMLWriter.java
index d3e44aa2681..3fb3d2edf7d 100755
--- a/java/src/IceGridGUI/XMLWriter.java
+++ b/java/src/IceGridGUI/XMLWriter.java
@@ -46,12 +46,9 @@ public class XMLWriter
public void writeElement(String name, String content) throws IOException
{
- //
- // TODO: deal with ]]> content
- //
_writer.write(_indent);
- _writer.write("<" + name + "><![CDATA[" + content
- + "]]></" + name + ">" + _newline);
+ _writer.write("<" + name + ">" + escape(content) +
+ "</" + name + ">" + _newline);
}
public void writeStartTag(String name, java.util.List attributes)
@@ -111,6 +108,60 @@ public class XMLWriter
_indent = _indent.substring(3);
}
+ private String
+ escape(String input)
+ {
+ String v = input;
+
+ //
+ // Find out whether there is a reserved character to avoid
+ // conversion if not necessary.
+ //
+ final String allReserved = "<>'\"&";
+ boolean hasReserved = false;
+ char[] arr = input.toCharArray();
+ for(int i = 0; i < arr.length; i++)
+ {
+ if(allReserved.indexOf(arr[i]) != -1)
+ {
+ hasReserved = true;
+ break;
+ }
+ }
+ if(hasReserved)
+ {
+ //
+ // First convert all & to &amp;
+ //
+ if(v.indexOf('&') != -1)
+ {
+ v = v.replaceAll("&", "&amp;");
+ }
+
+ //
+ // Next convert remaining reserved characters.
+ //
+ if(v.indexOf('>') != -1)
+ {
+ v = v.replaceAll(">", "&gt;");
+ }
+ if(v.indexOf('<') != -1)
+ {
+ v = v.replaceAll("<", "&lt;");
+ }
+ if(v.indexOf('\'') != -1)
+ {
+ v = v.replaceAll("'", "&apos;");
+ }
+ if(v.indexOf('"') != -1)
+ {
+ v = v.replaceAll("\"", "&quot;");
+ }
+ }
+ return v;
+ }
+
+
private Writer _writer;
private String _indent = "";
private static String _newline = System.getProperty("line.separator");