0

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

  1. 想要创建通用 java 类以使用 JDOM 生成 XML。
  2. 类有足够的能力在运行时生成任何 xml 结构,这取决于参数传递——如何?
  3. 例如,在我的模块中,我需要创建一个具有 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. 实用程序将帮助我们避免应用程序中的冗余代码并且易于管理......

请帮助你的朋友...

感谢角斗士

4

1 回答 1

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。

于 2012-04-16T04:29:35.920 回答