请建议我如何在java中执行以下实用程序,
例如,在我的模块中,我需要创建一个XML,它有三个不同的孩子,一个根,即
<Child>
<A> This is normal text </A>
<B> This is normal text </B>
<C> This is normal text </C>
</Child>
但在另一个模块中,我们需要另一个XML文件,其中包含10个具有某些属性的子项。
请帮助你的朋友......
由于 角斗
答案 0 :(得分:0)
你可以通过XStream这样做:
public static String getXMLFromObject(Object toBeConverted, String classNameAlias, Map<String, String> fieldAlias,
List<String> fieldsToBeOmitted) {
StringBuilder objectAsXML = new StringBuilder();
if(toBeConverted != null){
XStream xStream = new XStream(new DomDriver());
if(classNameAlias != null && classNameAlias != "" && classNameAlias.trim().length() > 0) {
xStream.alias(classNameAlias, toBeConverted.getClass());
}
if(fieldAlias != null && !fieldAlias.isEmpty()){
for (Entry<String, String> entry : fieldAlias.entrySet()) {
xStream.aliasField(entry.getKey(), toBeConverted.getClass(), entry.getValue());
}
}
if(fieldsToBeOmitted != null && fieldsToBeOmitted.size() > 0){
for (String fieldToBeOmitted : fieldsToBeOmitted) {
xStream.omitField(toBeConverted.getClass(), fieldToBeOmitted);
}
}
objectAsXML.append(xStream.toXML(toBeConverted));
}
return objectAsXML.toString();
}
如果您可以控制要转换为XML的类,那么我建议使用类似XMLConvertable
的接口,其结构类似于
public interface XMLConvertable {
public String getClassAlias();
public List<String> getFieldToBeOmitted();
public Map<String, String> getFieldAliases();
}
在这种情况下,您不需要在上面的方法中发送最后三个参数,只需从objectToBeConverted
获取它也更有意义,因为系统中的每个对象都可以声明自己是否可以转换它是否为XML。