Проблемы XML XStream - PullRequest
       14

Проблемы XML XStream

2 голосов
/ 16 апреля 2011
<PersonalVehicleCoverage>
        <EffectiveDate class="sql-date">2011-03-01</EffectiveDate>
        <ExpirationDate class="sql-date">2011-05-31</ExpirationDate>
</PersonalVehicleCoverage>

EffectiveDate of java.sql.date;

Я использую XStream для генерации XML из Java-объектов, используя следующий синтаксис:

xstream.toXML(data);

Я не хочу class="sql-date" как вывод в сгенерированном XML. Как мне этого добиться?

Ответы [ 2 ]

2 голосов
/ 25 сентября 2014

Вот что помогло мне решить ту же проблему:

xstream.addDefaultImplementation(java.sql.Date.class, Date.class);
xstream.addDefaultImplementation(java.sql.Timestamp.class, Date.class);

Где Date.class равно java.util.Date.

0 голосов
/ 21 ноября 2013

Добиться того, что вы хотите, просто. Вы создаете экземпляр XStream и настраиваете его (в приведенном ниже примере я должен установить псевдоним для PersonalVehicleCoverage, поскольку статические внутренние классы сериализуются с префиксом содержащего класса. Поскольку в примере не используется пакет, он сериализуется так, как вам требуется. Если ваши классы находятся в пакете, вы можете использовать что-то вроде этого для адаптации XML: xStream.aliasPackage("pre", "my.package");

Вот пример кода:

import java.sql.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

import com.thoughtworks.xstream.XStream;

public class XStreamDemo {

  public static void main(String[] args) throws ParseException {
    XStream xStream = new XStream();
    xStream.alias("PersonalVehicleCoverage", PersonalVehicleCoverage.class);
    PersonalVehicleCoverage object = new PersonalVehicleCoverage();
    DateFormat dateFormat = new SimpleDateFormat("yyyy MMM DD");
    object.EffectiveDate = new Date(dateFormat.parse("2011 Jan 1").getTime());
    object.ExpirationDate = new Date(dateFormat.parse("2011 Jan 31").getTime());
    System.out.println(xStream.toXML(object));
  }

  static class PersonalVehicleCoverage {
    Date EffectiveDate;
    Date ExpirationDate;
  }
}

И вот результат этого примера:

<PersonalVehicleCoverage>
  <EffectiveDate>2011-01-01</EffectiveDate>
  <ExpirationDate>2011-01-31</ExpirationDate>
</PersonalVehicleCoverage>
...