1

Notes DB を XML として表示するエージェントがあります。RichText 以外のすべてのフィールドを正常に取得しました。これはコード スニペットです。

Set session = New NotesSession
Set doc = session.DocumentContext
Set db = Session.CurrentDatabase
Set view = db.getview("myView")
Set doc = view.GetFirstDocument()

While Not(doc Is Nothing)
    Print "<job>"
    Print "<id>" & doc.id(0) & "</id>" ' Works fine since ID is a normal field
    Print "<text>" & doc.text(0) & "</text>" ' Does not work at all 
    Print "</job>"
    Set doc = view.GetNextDocument(doc)
Wend

doc.text(0) の代わりに doc.text を使用すると、テキスト全体の最初の 2 語だけが書き込まれます。テキスト全体に目を通す必要があると思いますが、私はロータス スクリプトを初めて使用するので、その方法がわかりません。君たちありがとう。

編集:サイモンの答えが正しいことが判明しました。次の Print を削除すると、私が知る限り、問題はエンコーディングに関するものです。

Print |Content-Type:text/xml| & Chr$(13)

すべて正常に動作します。ヘッダーでエンコーディングを定義する必要があると思います...

編集:代わりにこの Print を使用するようになりました:

Print "<text><![CDATA[" & rtitem.getUnformattedText() & "]]></text>"

ただし、ブラウザからエージェントを呼び出すと、CDATA を無視しているため、その印刷でまだ壊れています。

4

1 に答える 1

1

ドット表記は使用しないでください。Richtext フィールドを取得するには、getFirstItem() メソッド呼び出しを使用して NotesRichTextItem オブジェクトにリンクする必要があります。その後、 getUnformattedText() メソッドを使用してテキストに変換できるはずです。

Dim rtitem As NotesRichTextItem
...
rtitem = doc.getFirstItem("text")

Print "<text>" & rtitem.getUnformattedText() & "</text>" 

もちろん、そのテキストを解析して XML 内の非標準文字を防止するか、CDATA ブロックでラップする必要がある場合があります。

于 2013-02-25T13:42:28.387 に答える