4

現在、NuGet の C# Interop Domino アセンブリを使用して Lotus Notes データベースをエクスポートしています。

NotesRichTextItem 内のオブジェクトまたは要素を入力された順序で識別する方法が見つかりませんでした。たとえば、最初に段落を入力し、次に table 、次に添付ファイルを入力したとします。要素を順番にループする方法はありますか?

FindFirstElement を使用して要素を検索する方法を見つけましたが、探している要素の種類を渡す必要があります。順序なしですべての要素を抽出すると、コンテンツのコンテキストが失われるため、これは非常に困難です。

ありがとう

4

2 に答える 2

3

DXL (Notes 用の特別な XML 形式) を使用して、Notes ドキュメントの RichText アイテムを分析する方法があります。DxlExporterNotes ドキュメントを DXL 形式にエクスポートするために使用します。その後、XML を「ウォーク」して、正しい順序で要素を含む RichText アイテムのコンテンツを取得できます。

このRichTextアイテムの例

ここに画像の説明を入力

あなたはこのDXLを手に入れるでしょう

<item name='Body'>
    <richtext>
        <pardef id='1'/>
        <par def='1'>aaaaaaa</par>
        <table widthtype='fixedleft' refwidth='1.0667in'>
            <tablecolumn width='0.6729in'/>
            <tablecolumn width='0.3938in'/>
            <tablerow>
                <tablecell>
                    <pardef id='3' keepwithnext='true' keeptogether='true'/>
                    <par def='3'>111</par></tablecell>
                <tablecell>
                    <pardef id='4' keepwithnext='true' keeptogether='true'/>
                    <par def='4'>222</par></tablecell>
            </tablerow>
            <tablerow>
                <tablecell><par def='3'>333</par></tablecell>
                <tablecell><par def='4'>444</par></tablecell>
            </tablerow>
        </table>
        <pardef id='5' leftmargin='1.2500in' list='bullet'/>
        <par def='5'>xxx</par>
        <par def='5'>yyy</par>
        <par def='5'>zzz</par>
        <pardef id='6' leftmargin='1in'/>
        <par def='6'>
            <attachmentref name='icon16.gif' displayname='icon16.gif'>
                <picture height='34px' width='61px'>
                    <notesbitmap>lQAmAAAAAAAAAAAAA...</notesbitmap>
                    <caption>icon16.gif</caption>
                </picture>
            </attachmentref>
        </par>
    </richtext>
</item>

以下は、選択したドキュメントをファイルにエクスポートする Java エージェントです。

import lotus.domino.*;

public class JavaAgent extends AgentBase {

    @Override
    public void NotesMain() {

        try {
            Session session = getSession();
            AgentContext agentContext = session.getAgentContext();
            DocumentCollection dc = agentContext.getUnprocessedDocuments();
            String filename = "c:/temp/exportDocs.dxl";
            Stream stream = session.createStream();
            if (stream.open(filename)) {
                stream.truncate();
                DxlExporter exporter = session.createDxlExporter();
                exporter.setRichTextOption(0);
                exporter.setMIMEOption(0);
                stream.writeText(exporter.exportDxl(dc));
            } else {
                System.out.println("Cannot open " + filename);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
于 2013-07-11T22:03:57.100 に答える