LINQを使用して2つのXML文書を結合する必要があります。どこから開始するのか分かりません。ドキュメント1とドキュメント2をEmailAddressノードの値に参加させ、ドキュメント2のステータスフィールドの値を含む最終出力ドキュメントを作成する必要があります。LINQを使用して値にXML文書を結合する
誰でも手助けできますか?
文献1
文献2
最終文書の最初のステップで作成することである
LINQを使用して2つのXML文書を結合する必要があります。どこから開始するのか分かりません。ドキュメント1とドキュメント2をEmailAddressノードの値に参加させ、ドキュメント2のステータスフィールドの値を含む最終出力ドキュメントを作成する必要があります。LINQを使用して値にXML文書を結合する
誰でも手助けできますか?
文献1
文献2
最終文書の最初のステップで作成することである
電子メールをステータス値にマップします。次に、最初の文書からすべての電子メールアドレス要素を選択し、辞書に基づいて属性を設定します。
var dict = secondDoc.Descendants("EmailAddress")
.ToDictionary(e => e.Value, e => e.Attribute("status").Value);
var emails = firstDoc.Descendants()
.Where(e => e.Name.LocalName.StartsWith("EmailAddress")
&& Char.IsDigit(e.Name.LocalName[e.Name.LocalName.Length - 1]));
foreach (var email in emails)
{
string attribute;
if (dict.TryGetValue(email.Value, out attribute))
{
email.SetAttributeValue("status", attribute);
}
}
このアプローチは直接firstDoc
を更新します。新しいXElement
またはXDocument
は作成されません。私はChar.IsDigit
のチェックを追加して、数字で終わらないEmailAddress
フィールドが誤って一致するのを避けました。決してそうでないことが確かな場合は、そのチェックをクエリから削除することができます。
素敵な仕事!!!非常に雄弁とそれは完全に働いた。ありがとうございました。 – user135498
@ user135498 great :)文字列のインデックスと長さを使って最後の文字にアクセスするために 'IsDigit'チェックをわずかに更新しました。' Last'は文字列全体を繰り返します。 –
XMLをテキストとして投稿するとすばらしいことになりました。イメージは、人々が時間を無駄にしてコード/データを再構築しようとします。 –
申し訳ありません。私はXMLを投稿しようとしましたが、エディタはそれを受け取りませんでした。 – user135498