可以在Java中把你的SimpleBean写入字节流发送到指定的C++Servcer UDP port,C++直接读包再解析成相应的Object.如果通过XML并传送文件的话也很麻烦,Java->SimpleBean->XML->Tranfer File->C++->parse XML->consturct SimpleBean object.
如果必须要用XML,可以考虑SOAP协议.
如果必须要用XML,可以考虑SOAP协议.
解决方案 »
- 按照王勇老师的视频步骤 第一次配置hibernate 遇见的一个配置问题和几个问题常识问题
- java判读unix下的文件带中文报不存在
- struts2.0.11 ognl 调用静态方法抱错
- 关于Struts2.0的注释问题 在线等
- 请教 :::JSF
- System.gc()为什么没有调用finalize()方法?
- 关于hibernate的问题
- 我想得到由两个表关联所得到的一个查询结果的数据集,用CMP应该怎样做呢?
- 为了每月多1000元,值不值得辞职?
- 请教:Servlet参数传递时老出错是怎么回事?
- hibernate,spring,ibatis之间的区别和联系?
- 请教一个java.exe的问题
是通过socket和别的程序传送数据的
利用java发射将对象生成xml的方法JXmlSerializable 是一个利用java反射,通过调用对象中所有以get(不区分大小写)开头的方法除去getClass方法,生成xml格式,希望与大家分享一下
下面是一个parent 对象 ,包含两个child 对象 生成的xml如下<Parent>
<Name> jack </Name>
<Age> 0 </Age>
<Sex> male </Sex>
<Child>
<Name> tom </Name>
<Age> 0 </Age>
<Sex> male </Sex>
</Child>
<Child>
<Name> Marie </Name>
<Age> 0 </Age>
<Sex> female </Sex>
</Child>
</Parent>
import java.lang.reflect.Method;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Array;
import java.io.PrintWriter;
import java.io.IOException;
/**
* 简单的将对象转换为xml文本的类
*
* @version $Revision: 1.0 $ $Date: 2006/09/26 13:50:44 $
* @author 李科 [email protected]
*/
public class JXmlSerializable {
public void toXmlSerial(PrintWriter out,int num) throws InvocationTargetException,IllegalAccessException,IOException
{
String head="";
for(int i=0;i<num;i++)
{
head+="\t";
}
out.write(head+"<" +this.getClass().getName()+">\n");
Method[] methods=this.getClass().getMethods();
for(int i=0;i<methods.length;i++)
{
Class[] paras=methods[i].getParameterTypes();
String name=methods[i].getName();
if(paras==null||paras.length==0)
{
if((name.substring(0,3).toLowerCase().equals("get"))&&!name.equals("getClass"))
{
Object obj=methods[i].invoke(this,null);
getMethodXmlSerial(out,obj,methods[i],num);
}
}
}
out.write(head+"</" +this.getClass().getName()+">\n"); }
private void getMethodXmlSerial(PrintWriter out,Object obj,Method method,int num) throws InvocationTargetException,IllegalAccessException,IOException
{
if(obj==null)
return ;
String head="";
for(int i=0;i<=num;i++)
{
head+="\t";
}
if(obj.getClass().isArray())
{
for(int i=0;i<Array.getLength(obj);i++)
{
Object childobj=Array.get(obj,i);
if(childobj instanceof JXmlSerializable )
{
((JXmlSerializable)childobj).toXmlSerial(out,num+1);
}
else
{
getMethodXmlSerial(out,childobj,method,num);
}
}
}
else
{
out.write(head+" <"+method.getName().substring(3)+"> ");
out.write(obj.toString());
out.write(" </"+method.getName().substring(3)+"> \n");
}
}
}/*child 类 */
public class Child extends JXmlSerializable { private String _name;
private String _sex;
private int age;
public void setAge(int num)
{
age=num;
}
public int getAge()
{
return age;
}
public void setName(String name)
{
_name=name;
}
public void setSex(String sex)
{
_sex=sex;
}
public String getName()
{
return _name;
}
public String getSex()
{
return _sex;
}}
/*parent 类 包含了两个child */
import java.io.PrintWriter;
import java.lang.reflect.Array;
import java.util.Hashtable;
import java.util.LinkedList;
import java.util.Vector;
public class Parent extends JXmlSerializable { private String _name;
private String _sex;
private LinkedList list=new LinkedList();
private Vector vec=new Vector();
int age;
public void setAge(int num)
{
age=num;
}
public int getAge()
{
return age;
}
public void setName(String name)
{
_name=name;
}
public void setSex(String sex)
{
_sex=sex;
}
public String getName()
{
return _name;
}
public String getSex()
{
return _sex;
}
public void addChild(Child child)
{
list.add(child);
vec.add(child);
}
public Child[] getChild()
{
Child[] aa=new Child[vec.size()];
//list.toArray(aa);
vec.toArray(aa);
return aa;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
Parent pat=new Parent();
pat.setName("jack");
pat.setSex("male");
Child child1=new Child();
child1.setName("tom");
child1.setSex("male");
pat.addChild(child1);
Child child2=new Child();
child2.setName("Marie");
child2.setSex("female");
pat.addChild(child2);
pat.getChild();
PrintWriter out=new PrintWriter(System.out);
pat.toXmlSerial(out,0);
out.flush();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}