2016-01-25 32 views
0

我已經很傳遞一些XML元素屬性:XML到JSON到動態對象,得到

<response> 
    <SessionId>aaaaaaaaa</SessionId> 
    <EventType>ProductList</EventType> 
    <data> 
    <Provider Name="Some Provider Name Here"> 
    <Id>166</Id> 
    </Provider> 
    </data> 
</response> 

我然後將其轉換爲動態對象:

dynamic responseObj = JsonConvert.DeserializeObject<dynamic>(JsonConvert.SerializeXNode(XDocument.Parse(response))); 

之後,我結束了這動態對象:

{[response, { 
    "SessionId": "aaaaaaaaa", 
    "EventType": "ProductList", 
    "data": { 
    "Provider": [ 
     { 
     "@Name": "Some Provider Name Here", 
     "Id": "166", 
     ... 

我現在可以使用下面的foreach循環來訪問屬性:

foreach (var provider in responseObj.response.data.Provider) 
{ 
    Console.WriteLine(provider.Id); 
} 

這一切工作正常。

我的問題:如何在我的循環內訪問@Name屬性?導致使用:provider.Name產生零和[email protected]無法正常工作或

回答

2

您可以使用

provider["@Name"] 

我覺得XPath的可以這樣做更方便的方式。

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(s); 
var nodes = doc.SelectNodes("//response/data/Provider/@Name"); 
+0

Thanx man ..... that worked。 –