xml序列化

时间:2012-12-06 08:38:52

标签: c# xml-serialization

在C#中如何解析或序列化xml,如下所示,而不是x:

<response>
<result action="proceed" id="19809" status="complete" />
</response>

1 个答案:

答案 0 :(得分:1)

这符合您的需求:TutorialStackoverflow 正如@ L.B所说,google是你在这种情况下最大的朋友。

其他解决方案:

  1. 为xml创建xsd架构。
  2. 使用xsd.exe为其创建类。
  3. 使用标准序列化进行序列化。
  4. 这是我将助手类粘贴到项目中并序列化的时候。

        /// <summary>
    /// Serialization helper
    /// </summary>
    public static class XmlSerializationHelper
    {
        /// <summary>
        /// Deserializes an instance of T from the stringXml
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="xmlContents"></param>
        /// <returns></returns>
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1004:GenericMethodsShouldProvideTypeParameter")]
        public static T Deserialize<T>(string xmlContents)
        {            
            // Create a serializer
            using (StringReader s = new StringReader(xmlContents))
            {
                XmlSerializer serializer = new XmlSerializer(typeof(T));
                return (T)serializer.Deserialize(s);
            }
        }
    
        /// <summary>
        /// Serializes the object of type T to the filePath
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="serializableObject"></param>
        /// <param name="filePath"></param>
        public static void Serialize<T>(T serializableObject, string filePath)
        {
            Serialize(serializableObject, filePath, null);
        }
    
        /// <summary>
        /// 
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="serializableObject"></param>
        /// <param name="filePath"></param>
        /// <param name="encoding"></param>
        public static void Serialize<T>(T serializableObject, string filePath, Encoding encoding)
        {
            // Create a new file stream
            using (FileStream fs = File.OpenWrite(filePath))
            {
                // Truncate the stream in case it was an existing file
                fs.SetLength(0);
    
                TextWriter writer; 
                // Create a new writer
                if (encoding != null)
                {
                    writer = new StreamWriter(fs, encoding);
                }
                else
                {
                    writer = new StreamWriter(fs);
                }   
    
                // Serialize the object to the writer
                XmlSerializer serializer = new XmlSerializer(typeof(T));
                serializer.Serialize(writer, serializableObject);
    
                // Create writer
                writer.Close();
            }
        }
    }