现在的位置: 首页 > 综合 > 正文

为JAXB书写工具类

2014年09月05日 ⁄ 综合 ⁄ 共 4374字 ⁄ 字号 评论关闭

看代码,应该很好理解的:

@XmlRootElement(name="schema",namespace="http://www.w3.org/2001/XMLSchema")
public class Schema {
	
	private Element element;

	public Element getElement() {
		return element;
	}
	
	@XmlElement(name="element",namespace="http://www.w3.org/2001/XMLSchema")
	public void setElement(Element element) {
		this.element = element;
	}

	
	public Schema(Element element) {
		super();
		this.element = element;
	}

	public Schema() {
		super();
		// TODO Auto-generated constructor stub
	}
	
}

public class Element {
	
	private String name;
	private ComplexType complexType;
	
	
	public static String NAME_UDRQueryRequest ="UDRQueryRequest";
	public static String NAME_UDRQueryResponse ="UDRQueryResponse";
	public static String NAME_UDRNotifyRequest ="UDRNotifyRequest";
	public static String NAME_UDRNotifyResponse ="UDRNotifyResponse";
	
	
	public static String getResType(String nameType){
		if(NAME_UDRQueryRequest.equalsIgnoreCase(nameType))
			return NAME_UDRQueryResponse;
		else if(NAME_UDRNotifyRequest.equalsIgnoreCase(nameType))
			return NAME_UDRNotifyResponse;
		return null;
	}
	
	
	public String getName() {
		return name;
	}
	
	@XmlAttribute
	public void setName(String name) {
		this.name = name;
	}

	
	public ComplexType getComplexType() {
		return complexType;
	}
	
	@XmlElement(name="complexType",namespace="http://www.w3.org/2001/XMLSchema")
	public void setComplexType(ComplexType complexType) {
		this.complexType = complexType;
	}

	public Element(String name, ComplexType complexType) {
		super();
		this.name = name;
		this.complexType = complexType;
	}

	public Element() {
		super();
		// TODO Auto-generated constructor stub
	}
	
}

public class ComplexType {
	
	private Sequence sequence;
	
	
	public Sequence getSequence() {
		return sequence;
	}

	@XmlElement(name="sequence",namespace="http://www.w3.org/2001/XMLSchema")
	public void setSequence(Sequence sequence) {
		this.sequence = sequence;
	}

	public ComplexType(Sequence sequence) {
		super();
		this.sequence = sequence;
	}

	public ComplexType() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	
	
}

public class Sequence {
	
	private List<Elements> elements;

	public List<Elements> getElements() {
		return elements;
	}

	
	@XmlElement(name="element",namespace="http://www.w3.org/2001/XMLSchema")
	public void setElements(List<Elements> elements) {
		this.elements = elements;
	}


	public Sequence(List<Elements> elements) {
		super();
		this.elements = elements;
	}


	public Sequence() {
		super();
	}
	
	
}

public class Elements {
	
	private String name;
	private String type;
	private String value;
	private String minOccurs;

	
	public static String PROP_NAME = "name";
	public static String PROP_TYPE = "type";
	public static String PROP_VALUE = "value";
	public static String PROP_MIN_OCCURS = "minOccurs";
	
	public static String MUST_KEY_EVENTID = "EventID";
	public static String MUST_KEY_ACCEPTRESULT = "AcceptResult";
	public static String MUST_KEY_SOURCEIP = "SourceIP";
	public static String MUST_KEY_STARTTIME = "StartTime";
	public static String MUST_KEY_ENDTIME = "Endtime";
	public static String MUST_KEY_SEARCHRESULT = "SearchResult";
	public static String MUST_KEY_NOTIFYRESULT = "NotifyResult";
	
	
	public String getName() {
		return name;
	}

	@XmlAttribute
	public void setName(String name) {
		this.name = name;
	}

	public String getType() {
		return type;
	}

	@XmlAttribute
	public void setType(String type) {
		this.type = type;
	}

	public String getValue() {
		return value;
	}

	@XmlAttribute
	public void setValue(String value) {
		this.value = value;
	}

	public String getMinOccurs() {
		return minOccurs;
	}

	@XmlAttribute
	public void setMinOccurs(String minOccurs) {
		this.minOccurs = minOccurs;
	}

	public Elements(String name, String type, String value, String minOccurs) {
		super();
		this.name = name;
		this.type = type;
		this.value = value;
		this.minOccurs = minOccurs;
	}

	public Elements() {
		super();
	}

	public Elements(String name, String value) {
		super();
		this.name = name;
		this.value = value;
	}
	
	
}

这个是具体的工具类实现:

public class XMLParser {
	
	
	public static String objConvertXml(Class<?> parserClass,Object obj){
		StringWriter writer = new StringWriter();
		try {
			JAXBContext jaxbContext = JAXBContext.newInstance(parserClass);  
			Marshaller marshaller = jaxbContext.createMarshaller();  
			marshaller.marshal(obj,writer);
			
			return writer.getBuffer().toString();
		} catch (JAXBException e) {
			e.printStackTrace();
			System.out.println("XML转换错误...!");
		} 
		return null;
	}
	
	
	public static <T>T xmlConvertObj(Class<T> parserClass,String xmlStr){
		T req = null;
		try {
			JAXBContext jc = JAXBContext.newInstance(parserClass);
			
			Unmarshaller jaxbUnmarshaller = jc.createUnmarshaller();
			req = (T) jaxbUnmarshaller.unmarshal(new ByteArrayInputStream(xmlStr.getBytes()));
		} catch (JAXBException e) {
			e.printStackTrace();
			System.out.println("XML文件解析错误...!");
		}
		return req;
	}
	
}

调用方法:

//读取xml文件并解析
			Schema schema = XMLParser.xmlConvertObj(Schema.class, xmlStr);

对象转换成XMLString

Schema schema = new Schema(new Element("UDRQueryResponse",
				new ComplexType(
						new Sequence(setElements()))));
 String xmlStr = XMLParser.objConvertXml(Schema.class,schema);

抱歉!评论已关闭.