我有这个xml,我试图在调查后尝试获取节点<ErrorCode>
中的值,我发现使用XDocument更容易,因为它清除了来自api的响应的任何不需要的\r\n
给了我..但现在我不知道如何使用XDocument
<PlatformResponse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://platform.intuit.com/api/v1">
<ErrorMessage>OAuth Token rejected</ErrorMessage>
<ErrorCode>270</ErrorCode>
<ServerTime>2012-06-19T03:53:34.4558857Z</ServerTime>
</PlatformResponse>
我希望能够利用此调用来获取值
XDocument xmlResponse = XDocument.Parse(response);
我无法使用XmlDocument,因为它不会清理XML,因为它正在执行XDocument
谢谢
答案 0 :(得分:10)
由于您已定义了命名空间,请尝试以下代码:
XDocument xmlResponse = XDocument.Load("yourfile.xml");
//Or you can use XDocument xmlResponse = XDocument.Parse(response)
XNamespace ns= "http://platform.intuit.com/api/v1";
var test = xmlResponse.Descendants(ns+ "ErrorCode").FirstOrDefault().Value;
或者,如果您不想使用Namespace,那么:
var test3 = xmlResponse.Descendants()
.Where(a => a.Name.LocalName == "ErrorCode")
.FirstOrDefault().Value;
答案 1 :(得分:0)
您可以使用xpath结构来获取类似这样的值
string errorcode= xmlResponse.SelectSingleNode("PlatformResponse/ErrorCode").InnerText
或者
string result = xmlResponse.Descendants("ErrorCode").Single().Value;
答案 2 :(得分:0)
XDocument doc = XDocument.Load("YouXMLPath");
var query = from d in doc.Root.Descendants()
where d.Name.LocalName == "ErrorCode"
select d.Value;