私が達成しようとしているのは、JObjectをXMLドキュメントに変換し、XMlドキュメントから外部XMLを抽出することです。この背後にある理由は、結果を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>
私は次のメソッドを使用していますjオブジェクトからXMLを抽出するには:
string jsonStringToConvertToXmlString = JsonConvert.SerializeObject(notificationPayload);
XmlDocument doc = JsonConvert.DeserializeXmlNode(jsonStringToConvertToXmlString);
return doc.OuterXml;
質問:どのように私は同じTextプロパティにidプロパティを与えることができますか?
あなたの場合目的はXMLを作成することです、なぜJObjectを使うのですか? LINQ to XMLははるかに良い賭けになるでしょう。あなたはJObjectをXMLに変換しようとしていますが、あなたの質問は本当にJObjectを作成することができるようです。どうぞお分かりですか? –
@ JonSkeet私はJObjectを使ってXMLを構築して、XMLを文字列として直接書くのをやめています。私はLINQ to XMlについて知らなかったが、私は今それをどうにか調べるだろう。私はちょうど上記の問題に直面した。 –
@JonSkeet私はいくつかの検索をしました。あなたのおかげで、私の人生はもっと楽になりました。Hehe ..私はこの 'XElement notificationPayload = 新しいXElement(" toast "、 新しいXElement(" visual "、 新しいXElement "、 新しいXAttribute(" text "、notificationMessage、 new XAttribute(" id "、" 1 "))、 新しいXAttribute(" template "、" ToastGeneric "))))); return notificationPayload.Value; ' –