【问题标题】:XML to JSON to Dynamic object, get element propertyXML到JSON到动态对象,获取元素属性
【发布时间】:2016-05-01 16:43:27
【问题描述】:

我通过了一些 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 也不起作用

【问题讨论】:

    标签: json xml serialization dynamic


    【解决方案1】:

    你可以使用

    provider["@Name"] 
    

    我认为 XPath 可以以更方便的方式做同样的事情。

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

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      相关资源
      最近更新 更多