首页 > 解决方案 > 在 C# 中将以下 StreamReader 结果转换为 XML 时出错

问题描述

  if (response.StatusCode == HttpStatusCode.OK)
                    {

                        using (Stream stream = response.GetResponseStream())
                        {

                            using (StreamReader reader = new StreamReader(stream))
                            {
                                res= reader.ReadToEnd();
                                XmlDocument doc = new XmlDocument();
                                doc.XmlResolver = null;
                                doc.Load(res);
                            }
                            Console.WriteLine(res);
                        }

                    }

在上面的代码中,我在 res 变量中得到了以下结果。

如何从给定的结果中获取 TID 属性。

<!DOCTYPE RESULT SYSTEM "http://today.com/email/viewemail.dtd">
<RESULT REQID="16006914462">
   <MID SUBMITDATE="2018-08-02 12:25:37" ID="1" TAG="null" TID="40293189378" />
</RESULT>

当我尝试转换上述结果时,XmlDocument它会抛出异常

路径中的非法字符。

标签: c#asp.netasp.net-mvcxml-parsing

解决方案


您也可以使用 LinqXMl 来做您需要的事情。在下面的示例中,我从文本文件加载 xml 以模拟 xml 响应。接受 XML 字符串的 XDocument.Load 方法有一个重载。

XDocument xdoc = XDocument.Load("C:\\test.xml");
XElement resultNode = xdoc.Elements().First().Elements().FirstOrDefault();
var tidVale = resultNode.Attributes().First(a => a.Name == "TID");

然后,您可以相应地访问属性。

希望有帮助


推荐阅读