Как получить десериализованный атрибут xml из динамического объекта - PullRequest
0 голосов
/ 12 февраля 2019

Я могу без проблем получить внутренний текст элемента из expandoobject.Я не могу понять, как получить значение атрибута.

Делая 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 поля:

  • @ важно со значением "да"
  • @ получено со значением "2019-2-12"
  • Тело со значением «Привет, парень!»

Есть ли способ получить значения первых двух полей с префиксом @?Я понятия не имею, как бороться с этим символом @ на динамических объектах.

1 Ответ

0 голосов
/ 12 февраля 2019

Чтобы иметь дело со специальными символами, такими как "@" в динамическом объекте, вы должны привести его к `( IDictionary ).И тогда вы можете получить атрибут recevied как показано ниже:

var received = ((IDictionary<string, object>)obj.Message)["@recevied"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...