我有一个字符串,我正在传递给log4j以将其记录到文件中,该字符串的内容是XML,并且它被格式化为带有缩进的多行等等,以便于读取。
但是,我希望XML能够在一条线上,我该怎么办呢?我看过StringUtils,我想我可以去除标签和回车,但是必须有一个更干净的方式吗?
由于
答案 0 :(得分:5)
我会在它上面添加一个regexp替换。这不是高效的,但肯定比XML解析更快!
这是未经测试的:
String cleaned = original.replaceAll("\\s*[\\r\\n]+\\s*", "").trim();
如果我没有傻逼,那将消除所有行终止符以及紧跟在那些行终止符之后的任何空格。模式开头的空格应该杀死单个行上的任何尾随空格。 trim()
用于消除第一行开头和最后一行结束时的空格。
答案 1 :(得分:1)
也许使用JDom http://www.jdom.org/
public static Document createFromString(final String xml) {
try {
return new SAXBuilder().build(new ByteArrayInputStream(xml.getBytes("UTF-8")));
} catch (JDOMException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static String renderRaw(final Document description) {
return renderDocument(description, getRawFormat());
}
public static String renderDocument(final Document description, final Format format) {
return new XMLOutputter(format).outputString(description);
}
答案 2 :(得分:0)
String oneline(String multiline) {
String[] lines = multiline.split(System.getProperty("line.separator"));
StringBuilder builder = new StringBuilder();
builder.ensureCapacity(multiline.length()); // prevent resizing
for(String line : lines) builder.append(line);
return builder.toString();
}