1

問題が1つあります。オブジェクトをシリアル化する必要があり、そのsamオブジェクトはXMLに変換されますが、これは日時オブジェクトです。

わかりました、私はこのようないくつかのSQLクエリからのデータで満たされた文字列変数を持っています

// DateDeliveryRequest

 if (rw_mat["dat_pot"].ToString().Length <= 0)
     {
           date_req = "";
     }
     else
     {
           date_req = rw_mat["dat_pot"].ToString();
     }

現在、date_reqは次のようなオブジェクトに渡されています。

var dtfi = new DateTimeFormatInfo { ShortDatePattern = "dd-MM-yyyy", DateSeparator = "-" };
Agr3PL.DataArea.Header.DateDeliveryRequest = Convert.ToDateTime(date_req, dtfi);

そして最後に、このオブジェクトは、とりわけ、関数をシリアル化するために渡されます。

 private string SerializeAnObject(object obj)
            {

                System.Xml.XmlDocument doc = new XmlDocument();

                System.Xml.Serialization.XmlSerializer serializer = new        System.Xml.Serialization.XmlSerializer(obj.GetType());

                System.IO.MemoryStream stream = new System.IO.MemoryStream();

                try
                {

                    serializer.Serialize(stream, obj);

                    stream.Position = 0;

                    doc.Load(stream);

                    return doc.InnerXml;

                }

                catch (Exception ex)
                {
                    WriteErrors.WriteToLogFile("WS.SAVE_DOK_SERIJALIZACIJA", ex.ToString());

                    throw ex;

                }

だから私は日時変数をxmlに取得したいのですが、そうではありません、xmlは次のようになっている必要があります(これは単なるセグメントです)

- <Header>
  <MessageType>COR</MessageType> 
  <UniqueHeaderNumber /> 
  <UniqueHeaderNumberFromWMS /> 
  <CompanyCode /> 
  <OrderNumber /> 
  <InvoiceNumber /> 
  <MovementNumber /> 
  <ReceiptNumber /> 
  <DebitNoteNumber /> 
  <PickNoteNumber /> 
  <LoadNumber /> 
  <DropSequence /> 
  <BulkPickNoteNumber /> 
  <NumberOfPallets />
  <DateDeliveryRequest />

しかし、問題は、xmlがノード> DateDeliveryRequestを表示していないことです。それはありません。ノードがないだけで、エラーは発生しません> DateDeliveryRequest ???

シリアライザー機能の問題なのか、それともフォーマットの日付などの問題なのかわかりません。

4

2 に答える 2

1

日付をシリアル化するには、この文字列形式を使用します

date_req = rw_mat["dat_pot"].ToString("s");
于 2012-04-27T12:02:24.207 に答える
1

私はこのコードをテストしました:

public class Test
{
    private DateTime dateDeliveryRequestField;

    [System.Xml.Serialization.XmlElementAttribute(DataType = "date")]
    public System.DateTime DateDeliveryRequest { get { return this.dateDeliveryRequestField; } set { this.dateDeliveryRequestField = value; } }
}

private string SerializeAnObject(object obj)
{
    System.Xml.XmlDocument doc = new XmlDocument();
    System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(obj.GetType());
    System.IO.MemoryStream stream = new System.IO.MemoryStream();
    try
    {
       serializer.Serialize(stream, obj);
       stream.Position = 0;
       doc.Load(stream);
       return doc.InnerXml;
    }
    catch (Exception ex)
    {
        throw ex;
    }
}

Test n = new Test();
n.DateDeliveryRequest = DateTime.Parse("2012-10-07");
string result = SerializeAnObject(n);

結果:

<?xml version="1.0"?>
<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <DateDeliveryRequest>2012-10-07</DateDeliveryRequest>
</Test>

だからすべてがよさそうだ。

于 2012-04-27T14:05:34.090 に答える