1

これはおそらくかなり簡単ですが、何かが足りません... XElementがあり、その中で特定の要素のグループを見つけて、そのグループの新しい親要素を挿入する必要があります。

つまり、以下の例では、新しい要素を作成し、それをz要素のグループの親としてツリーに追加する必要があります-

<x>
    <z />
    <z />
    <z />
</x>

になります:

<x>
    <y>
        <z />
        <z />
        <z />
    </y>
</x>

Z要素の間に他の要素はありませんが、xmlには連続する要素の複数のインスタンスが存在する可能性があります。

可能であれば、XSLTを使用してデータを操作することは避けたいと思います。

助言がありますか?

4

2 に答える 2

1

XPath は既存のドキュメントにのみアクセスでき、新しいドキュメントを作成することはできません。

新しいドキュメントの作成に使用できるテクノロジには、XSLT、XQuery、Linq などがあります。

XSLT を使用したくない理由を知らずに質問に答えることは困難です。XSLT は、私たちの多くにとって明白で最も簡単な方法です。

于 2012-10-30T07:05:25.983 に答える
0

ドキュメントを変更したり、新しいドキュメントを出力するには、何か (DOM/XSLT/etc) を使用する必要があります。

そうは言っても、グループの最初の要素をターゲット<z/>にして(したがってグループを通過して)、それとグループ内の他の要素をラップすることで問題に取り組むことができます。

  1. //z[not(preceding-sibling::z)]<z/>は、先行する兄弟を持たないすべての要素を提供する<z/>ため、グループの最初の要素があります(返される要素の数はグループの数です)。

  2. DOM/other を使用してその要素を要素にラップします<y>

  3. グループ内の他の要素をラップします。最初の要素で、グループの要素 2 から N を取得するために<z/>使用します。following-sibling::z

于 2012-10-30T06:32:10.293 に答える