HtmlAgilityPack - コレクション内のすべてのノードを削除する

c# html html-agility-pack windows-runtime windows-store-apps

質問

私はcontentEditableを使用して取得するこの変わったネストされたHTMLを修正しようとしています

<span lang="">
   <p>line one</p>
   <p>line two</p>
</span>

私はこれらのspanノードのそれぞれを子ノードに置き換えたい

<span lang="">
   <p>line one</p>
   <p>line two</p>
</span>

ここで私が試したことがあります。

<span lang="">
   <p>line one</p>
   <p>line two</p>
</span>

これにより、 System.ArgumentOutOfRangeExceptionがスローされ、次のメッセージが表示されます。

<span lang="">
   <p>line one</p>
   <p>line two</p>
</span>

なぜこれが起こっているのか理解しています。ドキュメントを編集すると、私のspan要素のコレクションが無効になります。では、これをどうやってやるの?

また、どのように私は子ノードに含まれていないテキストに対処するのですか?この要素が見つかったとします

<span lang="">
   <p>line one</p>
   <p>line two</p>
</span>

それをどうやって入れ子にするのですか?

ご注意:これはWinRT用のHtmlAgilityPackですので、 SelectSingleNodeとすべてのxpathコマンドは利用できません

受け入れられた回答

あなたの問題については、 ドキュメントルートではなく、 親ノードからInsertBeforeを呼び出すように修正する必要があります

さらに、新しいノードを作成せずにノードを直接「 移動 」することができると思います。

foreach (var span in spans)
{
    foreach (var child in span.ChildNodes)
    {
        span.ParentNode.InsertBefore(child, span);
    }
    span.Remove();
}



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ