如何从动态对象获取反序列化的 xml 属性

我可以毫无问题地从 expandoobject 获取元素 innertext。我不知道如何获取属性的值。


通过这样做,我可以在 body 元素内获得预期的字符串。Console.WriteLine(obj.Message.Body)


    private void TestXML()

    {

        string xmlString = @"<?xml version=""1.0"" encoding=""utf-8""?><Message important=""yes"" recevied=""2019-2-12""><Body>Hi there fella!</Body></Message>";

        XDocument doc = XDocument.Parse(xmlString);

        string json = JsonConvert.SerializeXNode(doc);

        dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(json);


        Console.WriteLine(obj.Message);


    }

我做了一个调试,在下面我可以看到3个字段:obj.Message

  • 值为“是”的@important

  • 值为“2019-2-12”的@received

  • 身体与值“嗨,伙计们!

有没有办法用@ 前缀检索前2个字段的值?我不知道如何处理动态对象上的这个@字符。


智慧大石
浏览 60回答 1
1回答

缥缈止盈

要处理特殊字符,例如动态对象中的“@”,必须将其转换为 '(IDictionary)。然后,您可以将接收的属性作为波纹管:var&nbsp;received&nbsp;=&nbsp;((IDictionary<string,&nbsp;object>)obj.Message)["@recevied"];
打开App,查看更多内容
随时随地看视频慕课网APP