0

Javaで次のユーティリティを実行する方法を教えてください。

  1. JDOM で XML を生成する汎用 Java クラスを作成したい。
  2. クラスは、実行時に任意の xml 構造を生成するのに十分な能力があり、パラメーター パスに依存します -- どのように?
  3. たとえば、私のモジュールでは、1 つのルートを持つ 3 つの異なる子を持つ XML を作成する必要があります。

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

  4. しかし、別のモジュールでは、何らかの属性を持つ 10 の子を持つ別の XML ファイルが必要でした。

  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();
}

その場合、上記のメソッドで最後の 3 つのパラメーターを送信する必要はありobjectToBeConvertedません。

于 2012-04-16T04:29:35.920 に答える