Skip to content

Commit 23329e7

Browse files
Remove special chars from xml output
1 parent 386daf0 commit 23329e7

File tree

4 files changed

+63
-7
lines changed

4 files changed

+63
-7
lines changed

src/main/java/org/codehaus/plexus/util/xml/PrettyPrintXMLWriter.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ private static String escapeXml(String text) {
231231
private static final Pattern lowersText = Pattern.compile("([\000-\010\013-\014\016-\037])");
232232

233233
private static String escapeXmlAttribute(String text) {
234-
text = escapeXml(text);
234+
text = escapeXmlText(text);
235235

236236
// Windows
237237
Matcher crlfmatcher = crlf.matcher(text);
@@ -255,7 +255,7 @@ private static String escapeXmlText(String text) {
255255
Matcher m = lowersText.matcher(text);
256256
StringBuffer b = new StringBuffer();
257257
while (m.find()) {
258-
m = m.appendReplacement(b, "&#" + Integer.toString(m.group(1).charAt(0)) + ";");
258+
m = m.appendReplacement(b, "");
259259
}
260260
m.appendTail(b);
261261

src/main/java/org/codehaus/plexus/util/xml/pull/MXSerializer.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -943,10 +943,8 @@ protected void writeElementContent(String text, Writer out) throws IOException {
943943
// out.write(';');
944944
// pos = i + 1;
945945
} else {
946+
// skip special char
946947
if (i > pos) out.write(text.substring(pos, i));
947-
out.write("&#");
948-
out.write(Integer.toString(ch));
949-
out.write(';');
950948
pos = i + 1;
951949
}
952950
}

src/test/java/org/codehaus/plexus/util/xml/Xpp3DomWriterTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ private String createExpectedXML(boolean escape) {
8383
buf.append(" </el6>");
8484
buf.append(LS);
8585
if (escape) {
86-
buf.append(" <el8>special-char-&#7;</el8>");
86+
buf.append(" <el8>special-char-</el8>");
8787
} else {
8888
buf.append(" <el8>special-char-" + (char) 7 + "</el8>");
8989
}
@@ -101,7 +101,7 @@ private Xpp3Dom createXpp3Dom() {
101101
dom.addChild(el1);
102102

103103
Xpp3Dom el2 = new Xpp3Dom("el2");
104-
el2.setAttribute("att2", "attribute2\nnextline");
104+
el2.setAttribute("att2", "attribute2\nnextline" + (char) 7);
105105
dom.addChild(el2);
106106

107107
Xpp3Dom el3 = new Xpp3Dom("el3");
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package org.codehaus.plexus.util.xml.pull;
2+
3+
import java.io.StringReader;
4+
import java.io.StringWriter;
5+
import java.util.Arrays;
6+
7+
import org.junit.jupiter.api.Test;
8+
9+
import static org.junit.jupiter.api.Assertions.assertEquals;
10+
11+
class MXSerializerTest {
12+
13+
@Test
14+
void testSerialize() throws Exception {
15+
16+
StringWriter writer = new StringWriter();
17+
18+
MXSerializer sr = new MXSerializer();
19+
sr.setOutput(writer);
20+
21+
sr.startDocument(null, Boolean.TRUE);
22+
sr.startTag(null, "root");
23+
for (int i : Arrays.asList(8, 9, 10, 11, 13, 15)) {
24+
sr.startTag(null, "char");
25+
sr.text(Character.getName(i) + ": " + ((char) i));
26+
sr.endTag(null, "char");
27+
}
28+
29+
sr.endTag(null, "root");
30+
sr.endDocument();
31+
assertEquals(expectedOutput(), writer.toString());
32+
}
33+
34+
@Test
35+
void testDeserialize() throws Exception {
36+
MXParser parser = new MXParser();
37+
parser.setInput(new StringReader(expectedOutput()));
38+
int eventType = parser.getEventType();
39+
40+
while (eventType != XmlPullParser.END_DOCUMENT) {
41+
eventType = parser.next();
42+
}
43+
}
44+
45+
private String expectedOutput() {
46+
StringBuilder out = new StringBuilder();
47+
out.append("<?xml version=\"1.0\" standalone=\"yes\"?>");
48+
out.append("<root>");
49+
out.append("<char>BACKSPACE: </char>");
50+
out.append("<char>CHARACTER TABULATION: \t");
51+
out.append("</char><char>LINE FEED (LF): \n");
52+
out.append("</char><char>LINE TABULATION: </char>");
53+
out.append("<char>CARRIAGE RETURN (CR): \r");
54+
out.append("</char><char>SHIFT IN: </char>");
55+
out.append("</root>");
56+
return out.toString();
57+
}
58+
}

0 commit comments

Comments
 (0)