您的位置:首页 > 编程语言 > Java开发

java读取post的xml文件

2009-10-26 15:54 225 查看
<?xml version="1.0" encoding="GBK"?>
<message>
<linkid>11215226486368967764</linkid>
<spid>cmcc-2000</spid>
<spcode>10662000</spcode>
<feecode>LS</feecode>
<feeprice>100</feeprice>
<toicp>123</toicp>
<product></product>
<feecategory></feecategory>
<channel></channel>
<mobile></mobile>
<content>短息内容</content>
<isprovision></isprovision>
<issubscribe></issubscribe>
<createDate>2008-07-11 00:02:17</createDate>
</message>
/**泛型读取request post的XML文件,其中T符合java bean规范**/
package sharesoft;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;

import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

import com.cn.BusinessFlow;

public class ReceivePostXML <T> {

private T t;
public ReceivePostXML(InputStream is){

this.is = is;
}
public ReceivePostXML(){

}
public T readXMLLinton(HttpServletRequest request, HttpServletResponse response,Object object){

Document doc = null;
Element root;
BufferedReader br;
T t = (T) object;
try {
FileReader fr=new FileReader("WebRoot/WEB-INF/hell.xml");//测试时使用
//doc=new SAXBuilder().build(request.getReader());//创建Document对象,是具有xml格式的文件
doc=new SAXBuilder().build(fr);//测试时使用
root=doc.getRootElement();//返回根节点
System.out.println(t.getClass().toString());
PropertyDescriptor[] pd=Introspector.getBeanInfo(object.getClass()).getPropertyDescriptors();
//Introspector.getBeanInfo(t.getClass())反射机制得到javabean的属性和公开方法
//BeanInfo.getPropertyDescriptors()得到JavaBean的所有属性
//PropertyDescriptor 描述 Java Bean 通过一对存储器方法导出的一个属性。属性名和值
for(PropertyDescriptor p:pd){
String fieldName=p.getName();
String fieldValue;
if((fieldValue=root.getChildText(fieldName))!=null){//如果子节点的值不为空则执行 ,与此节点相同名字的JavaBean属性,通过一个存储器方法赋值
Method m=p.getWriteMethod();
m.setAccessible(true);
try{
m.invoke(t, fieldValue);
System.out.println("fieldValue:  "+fieldValue);
}catch(Exception e){
e.printStackTrace();
}
}
}
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IntrospectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return (T) t;
}
public static void main(String[] args) throws FileNotFoundException
{
FileReader fr=new FileReader("WebRoot/WEB-INF/hell.xml");
HttpServletRequest	request = null;
HttpServletResponse	response = null;
LinktoneMR businessFlow = new LinktoneMR();
new ReceivePostXML<LinktoneMR> ().readXMLLinton(request, response,businessFlow);
}
}

}


T是个JavaBean例如:

package sharesoft;

public class LinktoneMR {
private int id;
private String msgid="";//
private String linkid="";  //
private String statestr="";//
private String mobile="";   //
private String createDate="";//
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getMsgid() {
return msgid;
}
public void setMsgid(String msgid) {
this.msgid = msgid;
}
public String getLinkid() {
return linkid;
}
public void setLinkid(String linkid) {
this.linkid = linkid;
}
public String getStatestr() {
return statestr;
}
public void setStatestr(String statestr) {
this.statestr = statestr;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getCreateDate() {
return createDate;
}
public void setCreateDate(String createDate) {
this.createDate = createDate;
}

}
  

xml 如下只有一个节点

 
<?xml version="1.0" encoding="GBK"?>
<message>
<linkid>11215226486368967764</linkid>
<spid>cmcc-2000</spid>
<spcode>10662000</spcode>
<feecode>LS</feecode>
<feeprice>100</feeprice>
<toicp>123</toicp>
<product></product>
<feecategory></feecategory>
<channel></channel>
<mobile></mobile>
<content>短息内容</content>
<isprovision></isprovision>
<issubscribe></issubscribe>
<createDate>2008-07-11 00:02:17</createDate>
</message>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息