我正在尝试使用以下代码从具有XML格式的Web响应中提取数据 但是我在这行 var status = html.Element(“Status”)
这里得到空引用异常if (oHttpWebResponse.StatusCode.ToString().ToLower() == "ok")
{
string contentType = oHttpWebResponse.ContentType;
Stream content = oHttpWebResponse.GetResponseStream();
XDocument xDoc = new XDocument(XDocument.Load(content));
var html = xDoc.Root.Element("html");
var status = html.Element("Status"); // getting System.NullReferenceException here
var statusValue = status.Value;
var lice = html.Element("LicenseKey").Value;
}
我不是为什么我收到此错误,xml格式看起来像这样..
<html>
<Status>
200
</Status>
<LicenseKey>
FXOZ-HTTEKG-3QYB-MP2NPQ-AC7I3C-76SX-DVN4BA-C55RMK-RV2P-O5NSOQ
</LicenseKey>
<CustomerId>
U2N3XCAV
</CustomerId>
</html>
我不知道为什么我会收到此错误,如果有任何人请帮助我这个非常感谢的查询...
提前致谢..
答案 0 :(得分:1)
xDoc.Root
是全文,因为根是html
标记。它没有子元素。
要根据其名称获取元素,可以运行以下代码:
var status = xDoc.Root.Elements("Status").FirstOrDefault();
// ensure not null is assigned to "stringValue"
var statusValue = status==null? String.Empty: status.Value;
在C#6.0之后,您也可以使用此分配来确保null
未分配给stringValue
:
statusValue = status?.Value ?? String.Empty;
答案 1 :(得分:0)
xDoc.Root
是&#34; html&#34;在这个xml文档中标记,所以你正在寻找一个&#34; html&#34;这个&#34; html&#34;下的子元素标签就是为什么它为空。