2013-02-25 6 views
1

메모 DB를 XML로 표시해야하는 에이전트가 있습니다. RichText 대신 모든 필드를 성공적으로 검색했습니다. I (0) 단지 전체 텍스트의 첫 두 단어를 씁니다 doc.text 대신 doc.text 사용하는 경우서식있는 텍스트 필드를 읽는 방법?

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 

:이 코드입니다. 전 텍스트 전체를 통틀어 살펴야 만하지만, Lotus Script를 처음 접한 이래로 어떻게해야하는지 잘 모릅니다. 고마워.

편집 : 사이먼의 대답이 정확하다는 것이 밝혀졌습니다. 문제는 다음 인쇄물을 제거하면 내가 말할 수있는 한 인코딩과 관련됩니다.

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

모두 제대로 작동합니다. 내가 ... 내가 헤더에 인코딩을 정의 할 필요가 생각

편집 : 나는 아직도 그것을로 그 인쇄에 파산 브라우저에서 에이전트를 호출 할 때 그러나

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

: 지금 대신 인쇄를 사용 CDATA를 무시하고 있습니다.

+0

매번 질문을 수정하는 대신 별도의 질문으로 입력해야합니다. –

답변

1

점 표기법을 사용하지 마십시오. Richtext 필드를 얻으려면 getFirstItem() 메서드 호출을 사용하여 NotesRichTextItem 객체에 연결해야합니다. 그런 다음 getUnformattedText() 메소드를 사용하여 텍스트로 변환 할 수 있어야합니다.

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

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

물론 XML의 비표준 문자를 방지하거나 CDATA 블록으로 감싸기 위해 텍스트를 구문 분석해야 할 수도 있습니다.

+0

이것은 실제로 필드의 처음 몇 단어만을 반환합니다. 그러나 매번 에이전트를 호출 할 때마다 매번 임의의 행을 읽는 것과 결과가 다릅니다. – raz3r

+0

예, 죄송합니다. :/나는 내 대답을 바로 잡았다. –

+0

고맙습니다. 제 질문을 편집했습니다. CDATA가 없다면 어떻게 Louts Script에서 텍스트를 파싱 할 수 있습니까? 도서관이 있습니까? – raz3r

관련 문제