То, что я пытаюсь достичь, - это преобразование документа JObject в XML, а затем извлечение внешнего xml из документа XMl. Причины этого - отправить результаты в виде push-уведомления через Azure Notification Hub.Как правильно назначить свойства для других свойств в JObject?
То, что я пытаюсь получить это:
<toast>
<visual>
<binding template="ToastGeneric">
<text id="1">Message</text>
</binding>
</visual>
</toast>
То, что я пробовал:
JObject notificationPayload = new JObject(
new JProperty("toast",
new JObject(
new JProperty("visual",
new JObject(
new JProperty("binding",
new JObject(
new JProperty("@template", "ToastGeneric"),
new JProperty("text", notificationMessage,
new JProperty("@id", "1")))))))));
Приведенный выше код бросает исключение: Can not add Newtonsoft.Json.Linq.JProperty to Newtonsoft.Json.Linq.JArray.
Так что я пытался после того, как:
JObject notificationPayload = new JObject(
new JProperty("toast",
new JObject(
new JProperty("visual",
new JObject(
new JProperty("binding",
new JObject(
new JProperty("@template", "ToastGeneric"),
new JProperty("text", notificationMessage,
new JObject(
new JProperty("@id", "1"))))))))));
Выше кода дал мне результат, но не предполагаемый. Что я получил:
<toast>
<visual>
<binding template="ToastGeneric">
<text>Message</text>
<text id="1" />
</binding>
</visual>
</toast>
Чтобы извлечь Xml Из JObject Я использую следующий метод:
string jsonStringToConvertToXmlString = JsonConvert.SerializeObject(notificationPayload);
XmlDocument doc = JsonConvert.DeserializeXmlNode(jsonStringToConvertToXmlString);
return doc.OuterXml;
Вопрос: Как я могу дать свойство идентификатора в то же свойство текста?
Если ваш Цель состоит в том, чтобы создать XML, зачем вообще использовать JObject? LINQ to XML будет намного лучше. Вы говорите, что пытаетесь преобразовать JObject в XML, но ваш вопрос действительно может * создать * JObject. Не могли бы вы пояснить, пожалуйста? –
@JonSkeet Я пытаюсь построить XML, используя JObject, чтобы сохранить себя от написания XML непосредственно в виде строки. Я не знал о LINQ к XMl, я все равно проверю его. Я просто столкнулся с проблемой, о которой я говорил выше. –
@JonSkeet Я сделал несколько поисков и благодаря вам моя жизнь стала проще сейчас .. Хе-хе .. Я использовал это 'XElement notificationPayload = новый XElement (« тост », новый XElement (« visual », новый XElement (« привязка » », новый XElement (« текст », сообщение уведомления, новый XAttribute (« id »,« 1 »)), новый XAttribute (« шаблон »,« ToastGeneric »)))); return notificationPayload.Value; ' –