-3

C#で、以下のようなxmlを解析またはシリアル化するにはどうすればよいですか?ありがとうございます:

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

1 に答える 1

1

これはあなたのニーズに合うでしょう:チュートリアルまたはStackoverflow そして@LBが言っていたように、この場合グーグルはあなたの最大の友達です。

その他の解決策:

  1. xmlのxsdスキーマを作成します。
  2. xsd.exeを使用して、そのクラスを作成します。
  3. 標準のシリアル化を使用してシリアル化します。

これは、ヘルパークラスをプロジェクトに貼り付けて、シリアル化するときです。

    /// <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();
        }
    }
}
于 2012-12-06T10:07:18.930 に答える