C# 尝试在XML响应中查找元素
这是我从XML检索元素的代码:C# 尝试在XML响应中查找元素,c#,asp.net,asynchronous,xelement,async-await,C#,Asp.net,Asynchronous,Xelement,Async Await,这是我从XML检索元素的代码: private async Task<XElement> PostAsXmlRequestAsync(XElement parameter, CancellationToken responseToken) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(Constants.url); HttpResponseM
private async Task<XElement> PostAsXmlRequestAsync(XElement parameter, CancellationToken responseToken)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(Constants.url);
HttpResponseMessage responseMessage = await client.PostAsXmlAsync(Constants.uri, parameter, responseToken);
string responseContent = await responseMessage.Content.ReadAsStringAsync();
XElement responseXml = XElement.Parse(responseContent);
**bool hasElement = responseXml.Elements("Warnings").Any();
Console.WriteLine(hasElement);**
return responseXml;
}
}
您正在寻找的节点可能有一些名称空间,而不是默认的空名称空间(即XML有类似
xmlns=”http://some-namespace“
)
您应该使用具有名称空间的版本来选择元素。文章以样本形式展示了这两个案例:
XNamespace aw = "http://www.adventure-works.com";
var elements = xmlTree.Elements(aw + "Type2");
谢谢,但它不起作用,总是元素的价值null@user3444535所以您使用了
”http://www.opentravel.org/OTA/2003/05“
作为XNamespace
而代码仍然不起作用?@user3444535-请用“也尝试过…”编辑您的帖子-评论中的代码很难阅读。也就是说,不清楚您是否执行了xa=”http://www.opentravel.org/OTA/2003/05";代码>或错误地xa=“www.opentravel.org/OTA/2003/05”代码>对不起,xxmlns=”http://www.opentravel.org/OTA/2003/05";代码>var elements=responseXml.elements(xmlns+“OTA_VehAvailRateRS”)代码>Console.WriteLine(元素)代码>这是正确的男女同校。这不是工作。元素为空…@user3444535elements
据我所知,永远不会返回null
。。。无论如何,如果您阅读MSDN链接,您会注意到“返回此元素的子元素的筛选集合”-您请求与“this element”同名的子元素-实际上,您得到的集合是空的。
XNamespace aw = "http://www.adventure-works.com";
var elements = xmlTree.Elements(aw + "Type2");