摘要式身份验证后的 XML 变量
Posted
技术标签:
【中文标题】摘要式身份验证后的 XML 变量【英文标题】:Var with XML after Digest Authentication 【发布时间】:2013-07-11 14:06:37 【问题描述】:摘要式身份验证后:
var resultText = Digester.GrabResponse("/blabla");
我在 var resulText 中有这个:
<?xml version="1.0" encoding="utf-8"?>
<response>
<HELLO>
<time>08:10</time>
<date>11.08.09</date>
<temp>35.5</temp>
<humi>37.7</humi>
</HELLO>
</response>
我尝试使用 XDocument 获取日期的值,但没有成功。
【问题讨论】:
你尝试了什么?didn't work
是什么意思?
使用 XDocument:路径中有非法字符。使用 XReader: nullreference。 XDocument temp = XDocument.Load(resultText.ToString()); var date = temp.Descendants("date").First(); label1.Text = date.ToString();*/
【参考方案1】:
这真的很简单:-
XDocument xml = XDocument.Parse(resultText.ToString());
var date = (from n in xml.Descendants("HELLO")
select n.Element("date").Value).SingleOrDefault().ToString();
您需要使用XDocument.Parse 方法。看起来您正在将 XML 字符串作为 URI 传递给 Load
方法,这显然不起作用。
【讨论】:
当然。我正在加载一个字符串.... XDocument.Load 想要一个 URI... 快速而出色的响应。谢谢 注意:如果响应包含多个“Hello”元素,这将不起作用(将引发异常)。如果缺少“日期”元素,它也会抛出异常。出于显而易见的原因,将在 Select 中引发异常。 SingleOrDefault 也可能是 Single 并且 ToString() 在这里是多余的。这对您来说可能就足够了,但在我看来,这不是一个非常稳健的方法。 @ByteBlast 他的问题是使用XDocument.Load
并传入XML 字符串而不是URI,所以实际上,答案没有任何问题。这个查询是一个简单的例子来证明它是有效的。我在他的示例 XML 中没有看到超过一个 HELLO
元素。如果是这样,我显然不会选择使用 SingleOrDefault()
来演示,而是会调用类似 .ToList<string>();
的东西。以上是关于摘要式身份验证后的 XML 变量的主要内容,如果未能解决你的问题,请参考以下文章