如何阅读富文本字段?

时间:2013-02-25 13:31:11

标签: lotusscript

我有一个代理,它应该将Notes数据库显示为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而不是doc.text(0),它只会写出整个文本的前两个单词。我想我必须通过整个文本,但由于我是Lotus Script的新手,我不知道该怎么做。谢谢你们。

编辑:事实证明,西蒙的回答是正确的。如果我删除以下Print:

,问题就是我所知道的编码
Print |Content-Type:text/xml| & Chr$(13)

一切正常。我想我需要在标题中定义编码...

编辑:我现在改用此打印:

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

然而,当我从浏览器中调用代理时,由于忽略了CDATA,它仍然在该打印处破坏。

1 个答案:

答案 0 :(得分:1)

请勿使用点符号。要获取Richtext字段,您需要使用getFirstItem()方法调用并将其链接到NotesRichTextItem对象。之后,您应该能够使用getUnformattedText()方法将其转换为文本。

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

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

当然,您可能需要解析该文本以防止XML中的非标准字符,或将其包装在CDATA块中。