mirror of
https://gitee.com/dcren/initializr.git
synced 2025-07-31 15:56:29 +08:00
Merge pull request #1073 from jaferkhan
* pr/1073: Polish "Encode usual XML reserved characters" Encode usual XML reserved characters Closes gh-1073
This commit is contained in:
commit
43d790879f
@ -486,7 +486,7 @@ public class MavenBuildWriter {
|
||||
private void writeSingleElement(IndentingWriter writer, String name, String text) {
|
||||
if (text != null) {
|
||||
writer.print(String.format("<%s>", name));
|
||||
writer.print(text);
|
||||
writer.print(encodeText(text));
|
||||
writer.println(String.format("</%s>", name));
|
||||
}
|
||||
}
|
||||
@ -516,4 +516,31 @@ public class MavenBuildWriter {
|
||||
}
|
||||
}
|
||||
|
||||
private String encodeText(String text) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < text.length(); i++) {
|
||||
char character = text.charAt(i);
|
||||
switch (character) {
|
||||
case '\'':
|
||||
sb.append("'");
|
||||
break;
|
||||
case '\"':
|
||||
sb.append(""");
|
||||
break;
|
||||
case '<':
|
||||
sb.append("<");
|
||||
break;
|
||||
case '>':
|
||||
sb.append(">");
|
||||
break;
|
||||
case '&':
|
||||
sb.append("&");
|
||||
break;
|
||||
default:
|
||||
sb.append(character);
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -817,11 +817,25 @@ class MavenBuildWriterTests {
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void pomWithReservedCharacters() {
|
||||
MavenBuild build = new MavenBuild();
|
||||
build.settings().coordinates("com.example.demo", "demo").name("<demo project>")
|
||||
.description("A \"demo\" project for 'developers' & 'testers'");
|
||||
String pom = writePom(build);
|
||||
assertThat(pom).contains("<name><demo project></name>").contains(
|
||||
"<description>A "demo" project for 'developers' & 'testers'</description>");
|
||||
}
|
||||
|
||||
private void generatePom(MavenBuild mavenBuild, Consumer<NodeAssert> consumer) {
|
||||
consumer.accept(new NodeAssert(writePom(mavenBuild)));
|
||||
}
|
||||
|
||||
private String writePom(MavenBuild mavenBuild) {
|
||||
MavenBuildWriter writer = new MavenBuildWriter();
|
||||
StringWriter out = new StringWriter();
|
||||
writer.writeTo(new IndentingWriter(out), mavenBuild);
|
||||
consumer.accept(new NodeAssert(out.toString()));
|
||||
return out.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user