2012-01-06 67 views
0

,当我试图序列数据我使用这个有用的类XML:http://weblogs.asp.net/pwelter34/archive/2006/05/03/444961.aspx如何使自动类型定义时序列化成XML

于是我有:

public class LocalizableString : SerializableDictionary<string, object> 
    { 
     public object Get(string language) 
     { 
      return this[language]; 
     } 

     public void Set(string language, string value) 
     { 
      Util.SetDictionaryValue<string, object>(this, language, value); 
     } 
    } 

如果我用平常这个代码:

public void WriteXml(System.Xml.XmlWriter writer) 
     { 

      XmlSerializer keySerializer = new XmlSerializer(typeof(TKey)); 
      XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue)); 
      foreach (TKey key in this.Keys) 
      { 
       writer.WriteStartElement("item"); 
       writer.WriteStartElement("key"); 
       keySerializer.Serialize(writer, key); 
       writer.WriteEndElement(); 
       writer.WriteStartElement("value"); 

       TValue value = this[key]; 
       valueSerializer.Serialize(writer, value); 
       writer.WriteEndElement(); 
       writer.WriteEndElement(); 
      } 
     } 

我西港岛线得到:

<PersonenListe> 
    <PersonenArray> 
    <PersonObjekt> 
     <PropertyType>Unknown</PropertyType> 
     <ID>0</ID> 
     <FriendlyName>Max Man</FriendlyName> 
     <City>Capitol City</City> 
     <Age>33</Age> 
     <Name> 
     <item> 
      <key> 
      <string>test1</string> 
      </key> 
      <value> 
      <anyType xmlns:q1="http://www.w3.org/2001/XMLSchema" p8:type="q1:string" xmlns:p8="http://www.w3.org/2001/XMLSchema-instance">test2</anyType> 
      </value> 
     </item> 
     </Name> 
    </PersonObjekt> 
    </PersonenArray> 
</PersonenListe> 

但我需要有自动类型定义的代码像上面,但没有anyType的代码(ONY类型的属性),如在下面的例子:

<PersonenArray> 
    <PersonObjekt> 
     <PropertyType>Unknown</PropertyType> 
     <ID>0</ID> 
     <FriendlyName>Max Man</FriendlyName> 
     <City>Capitol City</City> 
     <Age>33</Age> 
     <Name> 
     <item> 
      <key> 
      <string>test1</string> 
      </key> 
      <value> 
      <string>test2</string> 
      </value> 
     </item> 
     </Name> 
    </PersonObjekt> 
    </PersonenArray> 
</PersonenListe> 

回答

0

这是因为你的基础字典键入<string, object>。如果您的关键字和值总是会是字符串,那么你的第一线,从

public class LocalizableString : SerializableDictionary<string, object> 

改变

public class LocalizableString : SerializableDictionary<string, string> 

而且我猜想,这应该解决您的问题。

+0

但我会有不同类型的值,并不总是字符串 – revolutionkpi 2012-01-06 12:28:08

+0

啊,我明白了。看看'System.Xml'的源代码在这里似乎并没有帮助我,我担心,所以我不知道。抱歉。 – 2012-01-06 12:39:47

相关问题