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



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

通过执行Console.WriteLine(obj.Message.Body),我可以在 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);
    }

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

  • 值为"是"的@important
  • 值为"2019-2-12"的@received
  • 有价值的身体 "嗨,伙计!">

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

要处理特殊字符,例如动态对象中的"@",必须将其转换为"(身份证(。然后你可以得到接收的属性如下:

var received = ((IDictionary<string, object>)obj.Message)["@recevied"];

相关内容

  • 没有找到相关文章

最新更新