簡體   English   中英

使用XmlReader讀取XML文件

[英]Read XML file with 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;

但orderNo輸出類似“ ok125698”。 但是我只想要“ 125698”。 怎么看?

您沒有在第二次調用AppendLine之前重置output ,導致output至少包含兩行:“ ok”和“ 125698”。 然后將orderNo設置為此字符串,替換\\r\\n ,生成“ ok125698”。

也許您是要使用其他output變量或清除其內容?

之所以發生這種情況,是因為您已經將狀態值附加到了輸出變量之后,就將其添加到了輸出變量中:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM