在Dot Net XmlSerializer对象中使用xml和Deserializer将xml标记转换为对象 - 怎么做java?
public static object ConvertToObject(Type objectType,String strxml)
{
try
{
Object obj=null;
XmlSerializer xs=new XmlSerializer(objectType);
obj=xs.Deserializer(new StringReader(strxml));
return obj;
}
catch(Exception e)
{
}
//Xml serialized with ihuti java and converted to xml by argobj
public static object ConvertFromObject(ihutidata argobj)//ihuti.java with xml elements
{
try
{
XmlWriterSettings Sett=new XmlWritterSettings();
settings.OmitXmlDeclaration=true;
StringBuilder builder=new StringBuilder();
XmlSerializer xs=new XmlSerializer(typeof(ihutidata));
XmlWriter xw=XmlWriter.Create(builder,settings);
xs.Serialize(xw,argobj);
xw.close();
return (builder.ToString());
}
catch(Exception e)
{
return("Exception"+e);
}
internal string savetodb(TSring argdata,string argclientip)
{
ihutidata req=(ihutidata)DataProcessing.ConvertToObject(typeof(ihutidata),argdata);
if(req!=null)
{
......
......
}
}
是的我同意XStream它将xml转换为对象,反之亦然但我的问题是...... 我必须用class调用converttoobject()并将其作为对象传递。 由于程序仍在C#中,我在java中执行相同的过程。
ihutidata是一个包含xml Root元素,属性和元素等的类。 在Java中可能吗?
答案 0 :(得分:2)
有许多库可以完成这项工作(序列化和反序列化对象),其中最简单的一个是XStream,here是使用的示例:
Person joe = new Person("Joe", "Walnes");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));
现在您可以简单地运行String xml = xstream.toXML(joe);
,结果是:
<person>
<firstname>Joe</firstname>
<lastname>Walnes</lastname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
<fax>
<code>123</code>
<number>9999-999</number>
</fax>
</person>
让对象重新运行Person newJoe = (Person)xstream.fromXML(xml);
用于XML绑定的Java体系结构 (JAXB)允许Java开发人员进行映射 Java类到XML表示。 JAXB提供两个主要功能: 将Java对象编组到的能力 XML和反向,即unmarshal XML回到Java对象。其他 单词,JAXB允许存储和 以任何XML检索内存中的数据 格式,无需实现 一组特定的XML加载和 保存程序的例程 阶级结构。它类似于 .Net中的xsd.exe和xmlserializers 框架。
但对我来说,大部分任务都可以通过XStream完成,轻量级且更容易(imho)
答案 1 :(得分:1)
您可以查看XStream。
答案 2 :(得分:0)
在Java中有XMLEncoder
您的方法将类似于:
public static <T> T convertToObject(Class<T> objectType, String xml) {
XMLDecoder decoder = new XMLDecoder(new ReaderInputStream(new StringReader(xml)));
T result = (T) decoder.readObject();
decoder.close();
return result;
}
public static String convertToString(Object object) {
StringWriter sw = new StringWriter();
XMLEncoder encoder = new XMLEncoder(new WriterOutputStream(sw));
encoder.writeObject(object);
encoder.close();
return sw.toString();
}
(注意ReaderOutputStream
来自apache commons-io)