SORU
9 EYLÜL 2010, PERŞEMBE


Java arasında basit dönüşüm.açıklama.Tarih ve XMLGregorianCalendar

Java arasında dönüştürme basit bir yöntem arıyorum.açıklama.Tarih ve javax.xml.veri türü.Her iki yönde de XMLGregorianCalendar.

İşte şimdi kullanıyorum bu kodu:

import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

/**
 * Utility class for converting between XMLGregorianCalendar and java.util.Date
 */
public class XMLGregorianCalendarConverter {  

    /**
     * Needed to create XMLGregorianCalendar instances
     */
    private static DatatypeFactory df = null;
    static {
        try {
            df = DatatypeFactory.newInstance();
        } catch (DatatypeConfigurationException dce) {
            throw new IllegalStateException(
                "Exception while obtaining DatatypeFactory instance", dce);
        }
    }  

    /**
     * Converts a java.util.Date into an instance of XMLGregorianCalendar
     *
     * @param date Instance of java.util.Date or a null reference
     * @return XMLGregorianCalendar instance whose value is based upon the
     *  value in the date parameter. If the date parameter is null then
     *  this method will simply return null.
     */
    public static XMLGregorianCalendar asXMLGregorianCalendar(java.util.Date date) {
        if (date == null) {
            return null;
        } else {
            GregorianCalendar gc = new GregorianCalendar();
            gc.setTimeInMillis(date.getTime());
            return df.newXMLGregorianCalendar(gc);
        }
    }

    /**
     * Converts an XMLGregorianCalendar to an instance of java.util.Date
     *
     * @param xgc Instance of XMLGregorianCalendar or a null reference
     * @return java.util.Date instance whose value is based upon the
     *  value in the xgc parameter. If the xgc parameter is null then
     *  this method will simply return null.
     */
    public static java.util.Date asDate(XMLGregorianCalendar xgc) {
        if (xgc == null) {
            return null;
        } else {
            return xgc.toGregorianCalendar().getTime();
        }
    }
}

Ben atlanan bir şey daha basit, bazı API çağrısı gibi var mı?

Zaman/standart XML tarih ve Java bir tarih arasında dönüştürme oldukça basit bir görev gibi görünüyor ve bu nesne kod yazmak falan yok şaşırdım.

Herhangi bir öneriniz var mı?

NOTLAR: JAXB derslerimi bir şemadan otomatik olarak oluşturulur. Benim proje üzerinde inşa süreci beni oluşturulmuş sınıflar için el ile değişiklik yapmak için izin vermez. X'ler:dateTime elemanları JAXB sınıflarda XMLGregorianCalendar olarak XJC tarafından üretiliyor. Şema YANITLANAN dosya sınırlı değişiklikler yapmak için izin oldum ve düzenli olarak genişletilmiş sürttü.

ÇÖZÜM GÜNCELLEME: Çözüm Blaise tarafından önerilen beni bu karmaşanın dışında XMLGregorianCalendar alıp java ile anlaşma sağladı.açıklama.Takvim nesneler yerine. Şema dosyası üstünde JAXB bağlayıcı bir madde ekleyerek, XJC x'ler için daha uygun dönüşümler:JAXB derslerimi dateTime oluşturmak mümkün. Burada YANITLANAN benim dosyada yapılan değişiklikleri gösteren bazı parçacıklar.

YANITLANAN dosyasında kök öğesi:

<xs:schema xmlns:mydata="http://my.example.com/mydata" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" targetNamespace="http://my.example.com/mydata" elementFormDefault="unqualified" attributeFormDefault="unqualified" version="0.2" xml:lang="en" jaxb:version="2.0">

JAXB bağlayıcı açıklama bloğu, hemen YANITLANAN kök öğesinden sonra: eklenen

<xs:annotation>
    <xs:appinfo>
        <jaxb:globalBindings>
            <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime" parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime" printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
        </jaxb:globalBindings>
    </xs:appinfo>
</xs:annotation>

XML:alan da mağazalar saat dateTime x'ler beri, Takvim nesneleri yerel ve dilimleri ile çalışmak için oldukça iyi bir API beri bana Takvim yerine Tarih ile çalışmak için daha iyi olabilir. Her durumda, XMLGregorianCalendar yerine Takvim nesneleri ile başa çıkmak için çok mutluyum. Dönüşüm için ihtiyaç artık yukarıda listelenen yöntemleri. Tüm java alamadım.açıklama.Tarih, ama yeterince yakın!

CEVAP
27 Mart 2012, Salı


Java için XMLGregorianCalendar.açıklama.Sadece yapabileceğin tarih:

java.util.Date dt = xmlGregorianCalendarInstance.toGregorianCalendar().getTime();  

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chickenby

    chickenby

    2 HAZİRAN 2008
  • LG Mobile Global

    LG Mobile Gl

    2 EYLÜL 2010
  • TomKNJ

    TomKNJ

    26 ŞUBAT 2007