我有一个XML文档,我试图用LINQ to XML查询。 XML是..
<status>
我正在尝试读取节点<status
的值以确定API调用是否成功。我无法将获取XDocument xml = XDocument.Parse(xmlResponse);
string returnValue = = xml.Descendants("result/status").Select(x => x.Name).ToString();
节点值所需的LINQ语法放在一起。我以为我可以使用XPath语法来获取值。
{{1}}
但是,我收到以下错误..
&#39; /&#39;字符,十六进制值0x2F,不能包含在名称中。
答案 0 :(得分:2)
试试这段代码:
XDocument xdoc = XDocument.Parse(@"
<response>
<operation>
<authentication>
<username>redacted</username>
<isauthenticated>true</isauthenticated>
</authentication>
<result>
<status>success</status>
</result>
</operation>
</response>
");
Boolean isSuccess;
String s = xdoc.Element("response").Element("operation").Element("result").Element("status").Value;
isSuccess = s == "success";
获取status
元素的值并检查它是否等于特定值;在这种情况下,isSuccess
将为true
。
答案 1 :(得分:1)
LINQ-to-XML方法Elements()
和Descendants()
仅处理单个名称,而不处理类似xpath的路径。如果要提供xpath表达式,请使用xpath扩展名。
// using System.Xml.Linq;
var status = (string)xml.XPathSelectElement("//result/status");
否则,您需要使用正确的方法构建等效查询。
var status = (string)xml.Descendants("result").Elements("status").FirstOrDefault();