-1

このようなxmlファイルがあります。

<response>    
    <status>ok</status>\r\n
    <number>125698</number>
    </response>

ステータスが「OK」の場合に数字を読みたい。これが私のコードです

using (XmlReader reader = XmlReader.Create(new StringReader(Response)))
                {
                    reader.ReadToFollowing("response");
                    reader.MoveToFirstAttribute();

                    reader.ReadToFollowing("status");
                    output.AppendLine(reader.ReadElementContentAsString());
                }
                OrderResponse = output.ToString();
                OrderResponse = OrderResponse.Replace("\r\n", "");

                if (OrderResponse == "ok")
                {
                    using (XmlReader reader = XmlReader.Create(new StringReader(Response)))
                    {
                        reader.ReadToFollowing("response");
                        reader.MoveToNextAttribute();

                        reader.ReadToFollowing("number");
                        output.AppendLine(reader.ReadElementContentAsString());
                    }

                    string orderNo = output.ToString();
                    orderNo = orderNo.Replace("\r\n", "");
                    HttpContext.Current.Session["orderNo"] = orderNo;

しかし、注文は「ok125698」のように出力されません。でも「125698」これだけ欲しい。読み方は?

4

2 に答える 2

2

outputへの 2 回目の呼び出しの前にリセットしていないためAppendLineoutput(少なくとも) 2 つの行が含まれています: "ok" と "125698"。次にorderNo、この文字列に設定し、 を置き換えて、\r\n「ok125698」を生成します。

おそらく、別のoutput変数を使用したり、その内容をクリアしたりするつもりでしたか?

于 2013-01-10T03:45:27.500 に答える
0

これは、ステータス値を出力変数に追加した後で、注文番号を出力変数に追加するために発生しています。

reader.ReadToFollowing("status");
output.AppendLine(reader.ReadElementContentAsString());

reader.ReadToFollowing("number");
output.AppendLine(reader.ReadElementContentAsString());

このコードは、必要以上に長くなります。これを試してください:

using (XmlReader reader = XmlReader.Create(new StringReader(Response)))
{
    reader.ReadToFollowing("response");

    reader.ReadToFollowing("status");
    string status = reader.ReadElementContentAsString();
    if (status == "ok")
    {
        reader.ReadToFollowing("number");
        string orderNo = reader.ReadElementContentAsString();
        HttpContext.Current.Session["orderNo"] = orderNo;
    }
}
于 2013-01-10T03:53:51.733 に答える