c#从xml响应中获取值

时间:2017-09-23 10:56:58

标签: c# xml

我正在尝试从xml respone中获取值:

<?xml version="1.0" encoding="utf-8"?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://adaddaasd.com">
<A>14</A>
<B>Failed</B>
<C>22</C>
</Response>

我的代码是:

string responseString = await response.Content.ReadAsStringAsync();

var xDocument = XDocument.Parse(responseString);

var responseNode = xDocument.XPathSelectElement("/Response");
var A = xDocument.XPathSelectElement("/Response/A");

但是我得到A和responseNode的空值。怎么了?感谢

1 个答案:

答案 0 :(得分:2)

公然忽略 XML文档中定义的XML命名空间:

start /wait  exc.xlsx && exit
exc.xlsx  cmd /k
exc.xlsx|rem

你需要将它包含在你的查询中 - 我会尝试这样做:

<Response xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' 
          xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
          xmlns='http://adaddaasd.com'>
          ****************************

如果您坚持使用var xDocument = XDocument.Parse(responseString); // *define* your XML namespace! XNamespace ns = "http://adaddaasd.com"; // get all the <Response> nodes under the root with that XML namespace var responseNode = xDocument.Descendants(ns + "Response"); // from the first <Response> node - get the descendant <A> nodes var A = responseNode.FirstOrDefault()?.Descendants(ns + "A"); 方法,则必须定义XPathSelectElement并在XPath选择中使用它:

XmlNamespaceManager