我已经传递了一些xml:
<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
产生null,而provider.@Name
不起作用
答案 0 :(得分:2)
您可以使用
provider["@Name"]
我认为XPath可以更方便地做同样的事情。
XmlDocument doc = new XmlDocument();
doc.LoadXml(s);
var nodes = doc.SelectNodes("//response/data/Provider/@Name");