2013-01-10 98 views
-1

我有一个这样的xml文件。使用XmlReader读取XML文件

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

我想读取数字,如果状态是“好”。 所以这是我的代码

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” orderNo输出。 但我只想要“125698”这个。 如何阅读?

+0

我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –

+1

为什么你的XML文件中有'\ r \ n'? –

回答

2

在第二次致电AppendLine之前,您没有重置output,导致output包含(至少)两行:“ok”和“125698”。然后,将orderNo设置为该字符串,替换\r\n,产生“ok125698”。

也许你打算使用不同的output变量或清除其内容?

+0

http://itzonesl.blogspot.com/2012/12/read-xml-file-in-cnet.html – chamara

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