2013-02-25 69 views
1

我有一个代理应该显示一个Notes数据库为XML。我成功地检索了所有的字段,但RichText字段。这是一个代码片段:如何阅读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)只写了整篇文章的前两个单词。我想我必须通过整个文本,但因为我是莲花脚本的新手,我不知道该怎么做。感谢你们。

编辑:事实证明,西蒙的答案是正确的。问题关于编码,据我所知,如果我删除以下打印:

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

一切工作正常。我想我需要在标头中定义的编码...

编辑:当我打电话从它仍然打破了在该打印,因为它的浏览器的代理

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

不过:我现在改用此打印忽略了CDATA。

+0

你应该把它作为一个单独的问题,而不是每次修改你的问题。 – 2013-02-25 14:14:18

回答

1

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

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

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

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

+0

这实际上只返回该字段的前几个单词。然而,每次我给代理打电话时,结果都会有所不同,因为它每次都在读取随机行。 – raz3r 2013-02-25 13:57:23

+0

是的,哎呀。 :/我更正了我的答案。 – 2013-02-25 14:03:46

+0

谢谢,我编辑了我的问题。如果没有CDATA,我该如何解析Louts Script中的文本?有没有图书馆? – raz3r 2013-02-25 14:12:51