mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-10-20 18:47:38 +08:00
xml代码优化
This commit is contained in:
@@ -8,53 +8,47 @@ import com.thoughtworks.xstream.core.util.QuickWriter;
|
||||
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
|
||||
import com.thoughtworks.xstream.io.xml.PrettyPrintWriter;
|
||||
import com.thoughtworks.xstream.io.xml.XppDriver;
|
||||
import com.thoughtworks.xstream.security.NullPermission;
|
||||
import com.thoughtworks.xstream.security.PrimitiveTypePermission;
|
||||
|
||||
public class XStreamInitializer {
|
||||
private static final XppDriver XPP_DRIVER = new XppDriver() {
|
||||
@Override
|
||||
public HierarchicalStreamWriter createWriter(Writer out) {
|
||||
return new PrettyPrintWriter(out, getNameCoder()) {
|
||||
private static final String PREFIX_CDATA = "<![CDATA[";
|
||||
private static final String SUFFIX_CDATA = "]]>";
|
||||
private static final String PREFIX_MEDIA_ID = "<MediaId>";
|
||||
private static final String SUFFIX_MEDIA_ID = "</MediaId>";
|
||||
|
||||
@Override
|
||||
protected void writeText(QuickWriter writer, String text) {
|
||||
if (text.startsWith(PREFIX_CDATA) && text.endsWith(SUFFIX_CDATA)) {
|
||||
writer.write(text);
|
||||
} else if (text.startsWith(PREFIX_MEDIA_ID) && text.endsWith(SUFFIX_MEDIA_ID)) {
|
||||
writer.write(text);
|
||||
} else {
|
||||
super.writeText(writer, text);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String encodeNode(String name) {
|
||||
//防止将_转换成__
|
||||
return name;
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
public static XStream getInstance() {
|
||||
XStream xstream = new XStream(new PureJavaReflectionProvider(), new XppDriver() {
|
||||
|
||||
@Override
|
||||
public HierarchicalStreamWriter createWriter(Writer out) {
|
||||
return new PrettyPrintWriter(out, getNameCoder()) {
|
||||
protected String PREFIX_CDATA = "<![CDATA[";
|
||||
protected String SUFFIX_CDATA = "]]>";
|
||||
protected String PREFIX_MEDIA_ID = "<MediaId>";
|
||||
protected String SUFFIX_MEDIA_ID = "</MediaId>";
|
||||
|
||||
@Override
|
||||
protected void writeText(QuickWriter writer, String text) {
|
||||
if (text.startsWith(this.PREFIX_CDATA) && text.endsWith(this.SUFFIX_CDATA)) {
|
||||
writer.write(text);
|
||||
} else if (text.startsWith(this.PREFIX_MEDIA_ID) && text.endsWith(this.SUFFIX_MEDIA_ID)) {
|
||||
writer.write(text);
|
||||
} else {
|
||||
super.writeText(writer, text);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String encodeNode(String name) {
|
||||
//防止将_转换成__
|
||||
return name;
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
XStream xstream = new XStream(new PureJavaReflectionProvider(), XPP_DRIVER);
|
||||
xstream.ignoreUnknownElements();
|
||||
xstream.setMode(XStream.NO_REFERENCES);
|
||||
xstream.addPermission(NullPermission.NULL);
|
||||
xstream.addPermission(PrimitiveTypePermission.PRIMITIVES);
|
||||
XStream.setupDefaultSecurity(xstream);
|
||||
xstream.allowTypesByWildcard(new String[]{
|
||||
"me.chanjar.weixin.**", "cn.binarywang.wx.**", "com.github.binarywang.**"
|
||||
});
|
||||
|
||||
XStream.setupDefaultSecurity(xstream);
|
||||
|
||||
xstream.setClassLoader(Thread.currentThread().getContextClassLoader());
|
||||
return xstream;
|
||||
}
|
||||
|
Reference in New Issue
Block a user