我有一个像这样的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”。 如何阅读?
答案 0 :(得分:2)
您在第二次致电output
之前未重置AppendLine
,导致output
包含(至少)两行:“ok”和“125698”。然后将orderNo
设置为此字符串,替换\r\n
,产生“ok125698”。
也许您打算使用不同的output
变量或清除其内容?
答案 1 :(得分: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;
}
}