Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通用XML实用程序——在java jdom中_Java_Xml_Jdom_Xml Generation - Fatal编程技术网

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

通用XML实用程序——在java jdom中,java,xml,jdom,xml-generation,Java,Xml,Jdom,Xml Generation,请建议我如何在java中执行以下实用程序 希望创建泛型java类以使用JDOM生成XML。 类是否能够在运行时生成任何xml结构取决于参数的传递方式? 例如,在我的模块中,我需要创建一个XML,它有3个不同的子元素,其中一个根元素是 <Child> <A> This is normal text </A> <B> This is normal text </B> <C> This is norm

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

希望创建泛型java类以使用JDOM生成XML。 类是否能够在运行时生成任何xml结构取决于参数的传递方式? 例如,在我的模块中,我需要创建一个XML,它有3个不同的子元素,其中一个根元素是

<Child>

  <A>  This is normal text   </A>

  <B>  This is normal text  </B>

  <C>  This is normal text  </C>

</Child>
但在另一个模块中,我们需要另一个XML文件,该文件包含10个子文件和一些属性

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

谢谢
角斗士

您可以通过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();
    }

在这种情况下,您不需要在上述方法中发送最后三个参数,只需从objectToBeConverted中获取它,而且它更有意义,因为系统中的每个对象都可以声明自己是否可以转换为XML。

此util方法是否接收对象,然后将其转换为XML?是的。。。我们可以传递对象,也可以只传递字符串格式的数据或java bean对象……如果您可以使用xstream,我可以向您展示一个可以使用的util方法,请告诉我。我阅读了有关xstream的。。。。请让我知道方法…非常感谢。。。
public interface XMLConvertable {
    public String getClassAlias();

    public List<String> getFieldToBeOmitted();

    public Map<String, String> getFieldAliases();
}