-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;

但 orderNo 输出像“ok125698”。但我只想要“125698”这个。怎么读?

4

2 回答 2

2

output在第二次调用之前没有重置AppendLine,导致output包含(至少)两行:“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 回答