2012-04-16 3 views
0

Пожалуйста, предложите мне, как сделать следующую программу в Java,Generic утилита XML - в Java JDOM

  1. Хотите создать общий класс Java для создания XML с JDOM.
  2. Класс способен достаточно генерировать любую структуру xml во время выполнения, зависит от параметра pass - How?
  3. К примеру, в моем модуле мне нужно, чтобы создать XML, который, имеющий 3 различных ребенка один корень, т.е.

    <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. Утилита поможет нам избежать избыточного кода в приложении и легко управлять, а также ...

Пожалуйста помочь своему другу ...

Благодаря гладиатором

+0

Этот метод приема принимает объекты, а затем преобразует их в XML? – mprabhat

+0

Да ... мы можем передать объект или только данные, которые находятся в формате String или java bean-объекте .... – GLADIATOR

+0

Если вы можете использовать xstream, я могу показать вам один способ использования, который можно использовать, сообщите мне. – mprabhat

ответ

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

Если у вас есть контроль над классами, которые вы собираетесь конвертировать int о XML, то я хотел бы предложить, чтобы иметь интерфейс что-то вроде XMLConvertable с некоторой структурой, как

public interface XMLConvertable { 
    public String getClassAlias(); 

    public List<String> getFieldToBeOmitted(); 

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

В этом случае вам не нужно посылать последние три параметра в указанном выше способе просто получить его от objectToBeConverted, а также его имеет смысл, поскольку каждый объект в системе может объявить себя, может ли он быть преобразован в XML или нет.