通用XML实用程序 - 在java jdom中

时间:2012-04-16 03:32:43

标签: java xml jdom xml-generation

请建议我如何在java中执行以下实用程序,

  1. 想要创建通用java类以使用JDOM生成XML。
  2. 类足以在运行时生成任何xml结构,具体取决于参数传递 - 如何?
  3. 例如,在我的模块中,我需要创建一个XML,它有三个不同的孩子,一个根,即

    <Child>
    
      <A>  This is normal text   </A>
    
      <B>  This is normal text  </B>
    
      <C>  This is normal text  </C>
    
    </Child>
    

  4. 但在另一个模块中,我们需要另一个XML文件,其中包含10个具有某些属性的子项。

  5. 所以我们决定使用通用XML实用程序,它在运行时在特定文件夹中生成XML文件。
  6. 实用程序将帮助我们避免应用程序中的冗余代码并且易于管理......
  7. 请帮助你的朋友......

    由于 角斗

1 个答案:

答案 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。