2013-02-25 63 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