0

POSTデータをASPX(c#)ページに読み込もうとしています。投稿データを文字列内に取得しました。私は今、これがそれを使用するための最良の方法であるかどうか疑問に思っています。ここのコードを使用して(http://stackoverflow.com/questions/10386534/using-request-getbufferlessinputstream-correctly-for-post-data-c-sharp)次の文字列があります

<callback variable1="foo1" variable2="foo2" variable3="foo3" />

これは文字列になっているので、スペースに基づいて分割しています。

    string[] pairs = theResponse.Split(' ');
    Dictionary<string, string> results = new Dictionary<string, string>();
    foreach (string pair in pairs)
    {
        string[] paramvalue = pair.Split('=');
        results.Add(paramvalue[0], paramvalue[1]);
        Debug.WriteLine(paramvalue[0].ToString());
    }

値にスペースが含まれていると問題が発生します。たとえばvariable3="foo 3"、コードを混乱させます。

文字列内の着信httppost変数を解析するために私がすべきより良い何かがありますか?

4

1 に答える 1

2

あなたはそれを直接XMLとして扱いたいかもしれません:

// just use 'theResponse' here instead
var xml = "<callback variable1=\"foo1\" variable2=\"foo2\" variable3=\"foo3\" />";

// once inside an XElement you can get all the values
var ele = XElement.Parse(xml);

// an example of getting the attributes out
var values = ele.Attributes().Select(att => new { Name = att.Name, Value = att.Value });

// or print them
foreach (var attr in ele.Attributes())
{
    Console.WriteLine("{0} - {1}", attr.Name, attr.Value);
}

もちろん、その最後の行を好きなように変更できます。上記は大まかな例です。

于 2012-05-01T10:50:06.887 に答える