Browse Source

优化代码

master
Daniel Qian 10 years ago
parent
commit
ccf57aead5
1 changed files with 6 additions and 11 deletions
  1. +6
    -11
      src/main/java/me/chanjar/weixin/util/xml/XmlTransformer.java

+ 6
- 11
src/main/java/me/chanjar/weixin/util/xml/XmlTransformer.java View File

@@ -5,8 +5,6 @@ import java.io.InputStream;
import java.io.StringReader; import java.io.StringReader;
import java.io.StringWriter; import java.io.StringWriter;
import java.io.Writer; import java.io.Writer;
import java.util.HashMap;
import java.util.Map;


import javax.xml.bind.*; import javax.xml.bind.*;


@@ -17,7 +15,7 @@ import com.sun.xml.bind.marshaller.CharacterEscapeHandler;


public class XmlTransformer { public class XmlTransformer {


protected static final JAXBContext jaxbContext = initJAXBContext();
protected static final JAXBContext JAXB_CONTEXT = initJAXBContext();


/** /**
* xml -> pojo * xml -> pojo
@@ -29,16 +27,14 @@ public class XmlTransformer {
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> T fromXml(Class<T> clazz, String xml) throws JAXBException { public static <T> T fromXml(Class<T> clazz, String xml) throws JAXBException {
JAXBContext context = jaxbContext;
Unmarshaller um = context.createUnmarshaller();
Unmarshaller um = JAXB_CONTEXT.createUnmarshaller();
T object = (T) um.unmarshal(new StringReader(xml)); T object = (T) um.unmarshal(new StringReader(xml));
return object; return object;
} }


@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> T fromXml(Class<T> clazz, InputStream is) throws JAXBException { public static <T> T fromXml(Class<T> clazz, InputStream is) throws JAXBException {
JAXBContext context = jaxbContext;
Unmarshaller um = context.createUnmarshaller();
Unmarshaller um = JAXB_CONTEXT.createUnmarshaller();
InputSource inputSource = new InputSource(is); InputSource inputSource = new InputSource(is);
inputSource.setEncoding("utf-8"); inputSource.setEncoding("utf-8");
T object = (T) um.unmarshal(inputSource); T object = (T) um.unmarshal(inputSource);
@@ -60,14 +56,13 @@ public class XmlTransformer {
} }


public static <T> void toXml(Class<T> clazz, T object, Writer writer) throws JAXBException { public static <T> void toXml(Class<T> clazz, T object, Writer writer) throws JAXBException {
JAXBContext context = jaxbContext;
Marshaller m = context.createMarshaller();
Marshaller m = JAXB_CONTEXT.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.setProperty(CharacterEscapeHandler.class.getName(), characterUnescapeHandler);
m.setProperty(CharacterEscapeHandler.class.getName(), CHAR_ESCAPE_HANDLER);
m.marshal(object, writer); m.marshal(object, writer);
} }


protected static CharacterEscapeHandler characterUnescapeHandler = new CharacterUnescapeHandler();
protected static final CharacterEscapeHandler CHAR_ESCAPE_HANDLER = new CharacterUnescapeHandler();


protected static class CharacterUnescapeHandler implements CharacterEscapeHandler { protected static class CharacterUnescapeHandler implements CharacterEscapeHandler {
public void escape(char[] ac, int i, int j, boolean flag, Writer writer) throws IOException { public void escape(char[] ac, int i, int j, boolean flag, Writer writer) throws IOException {


Loading…
Cancel
Save