2012-11-07 50 views
1

我有一些XML是从一个REST调用看起来像这样返回:如何使用XElement.Parse然后找到特定元素的值?

<ArrayOfProperty xmlns=\"http://schemas.microsoft.com/HPCS2008R2/common\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\"> 
    <Property> 
    <Name>Id</Name> 
    <Value>17</Value> 
    </Property> 
    <Property> 
    <Name>StartTime</Name> 
    <Value>11/7/2012 9:13:50 PM</Value> 
    </Property> 
    <Property> 
    <Name>State</Name> 
    <Value>Failed</Value> 
    </Property> 

我使用RestSharp API,以协助执行API调用,并试图使用LINQ-TO- xml XElement.Parse解析结果。我不知道如何获得状态的值,以便从本文档中我想要执行类似的操作:

XElement.Parse(XMLstring).Elements???从包含元素状态的元素集合中获取文本“失败”,但是我想要<Value>Failed</Value>元素中的文本“失败”。该值元素可以有多个值,但我总是希望与该状态关联的值。

任何想法?

回答

1

您的XML包含默认名称空间,所以您需要定义它并在查询中使用。

XNamespace ns = "http://schemas.microsoft.com/HPCS2008R2/common"; 

var value = (string)XDocument.Parse(input) 
    .Descendants(ns + "Property") 
    .Where(p => (string)p.Element(ns + "Name") == "State") 
    .Elements(ns + "Value").FirstOrDefault(); 
+1

太棒了!非常感谢;这件事我一直在喋喋不休。 –

+1

@ChrisTownsend,不客气! –

相关问题