1

OpenXML SDL 2.0 を使用して、Word ドキュメント内の特定の要素のリストを作成しようとしています。テンプレートを開き、Word テンプレートをスキャンして、使用可能なドキュメント パーツのリストとして使用するすべての「w:sdt」要素を探します。このリストをユーザーに表示して、必要なパーツ/要素を選択して、テンプレート ドキュメントからドキュメントの新しいバージョン/コピーを作成できるようにします。

したがって、私のリストは連続する要素番号 (これは DocumentBuilder クラスで使用されます) と、「w:alias」「val」または「w:tag」「val」を取得する必要があります。ユーザーへの選択オプション。

ユーザーが使用可能なテンプレート XML パーツ/要素を確認して選択したら、DocumentBuilder を使用して、特定されたパーツを連続番号で新しいドキュメントに追加します。

DocumentBuilder を使用して、連続番号でドキュメント要素を明示的に識別し、新しいドキュメントを作成することに成功しました。これは美しく機能します。

テンプレート ドキュメントを反復処理し、修飾された要素を LIST に追加するには、再帰を使用する必要があることはわかっています。私はまだ C# や OpenXML SDK に精通しておらず、目的の XML 部分/要素を対象とするテンプレート ドキュメントを再帰する最も洗練された方法を特定することができません。

OpenXMLドキュメントのパーツ/要素のリストを列挙するための適切な例を教えてもらえますか?

4

1 に答える 1

1

パフォーマンス上の理由がない限り、OpenXmlSdkを使用してドキュメントを開き、LINQクエリを実行して各SDT要素を見つけることができませんでしたか?

次のようなもの:

using(WordProcessingDocument doc = WordProcessingDocument.Open(byte[], false);){

     IEnumerable<SdtContent> sdtElements = doc.MainDocumentPart.Body.Descendants<SdtContent>();
     foreach(SdtContent el in sdtElements){
        // Collect content tag name/alias
        // Collect your sequential element number?
     }
}

私は以前にこのアプローチを使用し、外部要素を除外してSdtContent要素のリストを収集しました。連続した要素番号の意味はわかりませんが?

于 2011-01-13T01:03:06.560 に答える