• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Как файл в текст загонять?

seoman2

Green Team
17.02.2010
499
1
BIT
15
У кого-то получалось вариантом
Код:
xml = xml + {<prilojenie>} + doc.getItemValue("ПРИЛОЖЕНИЯ_")(0) + {</prilojenie>} + Chr(13)
записывать в файл вложения из поля ПРИЛОЖЕНИЯ_ типа Rich Text?

Вариант
Код:
pril = doc.GetItemValue( "ПРИЛОЖЕНИЯ_" )
Forall m In pril
total = total + m
End Forall
xml = xml + {<prilojenie>} + total + {</prilojenie>} + Chr(13)
pril всегда пустое почему то....
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
177
что пытаетесь сделать?
то что написали выше - это (мягко говоря) некорректно впринципе
 

seoman2

Green Team
17.02.2010
499
1
BIT
15
Хочу в переменную xml загнать содержимое поля "ПРИЛОЖЕНИЯ_" типа Rich Text, чтобы потом сохранить переменную xml в файл с расширением xml.
Сделать что то аналогичное выгрузке CreateDXLExporter.
 

Eugen

Green Team
22.03.2012
210
1
BIT
1
Попробуйте так. Это готовый вариант по выгрузке в dxl текущего документа вместе с вложением для вашей базы.

Код:
Sub Click(Source As Button)
On Error Goto errh
Dim w As New NotesUIWorkspace
Dim s As New NotesSession
Dim doc As NotesDocument
Dim stream As NotesStream
Dim exporter As NotesDXLExporter
Dim dt As New NotesDateTime(Today)
Dim filePath As String
Dim fileName As String
Dim xmlTxt As String
Dim file As Integer
file = Freefile

Set doc = w.CurrentDocument.Document
filePath = "C:\text\"
fileName = "выгрузка от "+dt.DateOnly+{.xml}
Set stream = s.CreateStream
Call stream.Truncate
Set exporter = s.CreateDXLExporter(doc, stream)

Call exporter.Process

Open filePath+fileName For Output As file
Write #file, stream.ReadText
Close file

Goto endSub
errh:
Print {Error: "} & Error & {" in line } & Erl & {.}
Resume endSub
endSub:
End Sub
 
K

Kee_Keekkenen

Хочу в переменную xml загнать содержимое поля "ПРИЛОЖЕНИЯ_" типа Rich Text, чтобы потом сохранить переменную xml в файл с расширением xml.
Сделать что то аналогичное выгрузке CreateDXLExporter.

можно создать свой хмл, например так
Dim ses As New NotesSession
Dim parser As NotesDOMParser
Dim dom As NotesDOMDocumentNode
Dim instrNode As NotesDOMProcessingInstructionNode
Dim rootElement As NotesDOMElementNode
Dim child As NotesDOMElementNode
Dim stream As NotesStream

Set parser = ses.Createdomparser
Set dom = parser.Document

Set rootElement = dom.Createelementnode( "root_tag" )
Set instrNode = dom.CreateProcessingInstructionNode( {xml}, {version=1.0 encoding=Windows-1251})
Call rootElement.AppendChild( instrNode )

Set child = dom.Createelementnode( "xml_tag" )
Call child.Appendchild( dom.Createtextnode( "Здесь значение, полученное из поля" ) )
Call rootElement.Appendchild( child )

Set stream = ses.Createstream()
Call stream.open( "c:\test.xml", "Windows-1251" )
Call stream.truncate()
Call parser.Setoutput( stream )
Call parser.Serialize()
Call stream.Close()

писал сходу работоспособность не проверял.. должно работать
 

seoman2

Green Team
17.02.2010
499
1
BIT
15
Eugen - выложите Ваш svg2gfx-simple.xsl и Ваш рабочий код с CreateXSLTransformer, не с поста 1.

Проблема сделать проблема сделать валидный .xsl для обработки XML.
Пример:
XML содержит:
<item name='ЗАГОЛОВОК'><text>текст заголовка</text></item>
xsl содержит:
<xsl:value-of select="ЗАГОЛОВОК"/>
но на выходе CreateXSLTransformer хмлка содержит строку:
xsl:value-of select="ЗАГОЛОВОК"/>
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
53
Надо использовать класс NotesRichTextItem. И, таким способом, получите только текст, без картинок, вложений и т.д.
Вложения можно перегнать в Base64, но получится "шило на мыло".
 

seoman2

Green Team
17.02.2010
499
1
BIT
15
Не получается выгрузить в текстовую строку поле "ПРИЛОЖЕНИЯ_" типа RichText.

Dim rtitem As NotesRichTextItem
Set rtitem = New NotesRichTextItem ( doc, "ПРИЛОЖЕНИЯ_")
Forall m In rtitem.values
total = total + m
End Forall

xml = xml + {<prilojenie>} + total + {</prilojenie>} + Chr(13)
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
Код:
Set rtitem = doc.GetFirstItem("ПРИЛОЖЕНИЯ_")
' plainText$ = notesRichTextItem.GetUnformattedText( )
 

seoman2

Green Team
17.02.2010
499
1
BIT
15
Мне не текст с поля надо, а содержимое rtitem.EmbeddedObjects(0)
Выгружать в файл
Call rtitem.ExtractFile( "c:\samples\" & o.Source )
, а потом его как текст в xml загонять?
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
вот и добрались до сути.
Вы хелп про EmbeddedObjects property для notesRichTextItem читали?
Там операции с объектами: аттачменты(файлы), встроенное OLE и ссылки.
Так просто, с ходу, это не получить.
Что конкретно вам нужно из вашего RT поля?
Список файлов? Это просто.
Содержимое файлов? Тут сложнее, особенно с картинками и PDF и кучей всего другого.
Список ссылок? Относительно просто, вопрос что нужно.
 

seoman2

Green Team
17.02.2010
499
1
BIT
15
Задача, выгружать (потом загружать) в XML (определенного формата) документ у которого в RT поле ПРИЛОЖЕНИЯ_ могут быть различные вложения - doc, pdf.
Понятно, что можно с CreateXSLTransformer все сделать, но пока отрабатываю вариант с записью полей в переменную.
 

garrick

Lotus Team
26.10.2009
1 349
151
BIT
164
Задача, выгружать (потом загружать) в XML (определенного формата) документ у которого в RT поле ПРИЛОЖЕНИЯ_ могут быть различные вложения - doc, pdf.
Понятно, что можно с CreateXSLTransformer все сделать, но пока отрабатываю вариант с записью полей в переменную.
Ну, допустим в этом поле есть вложение - файл Microsoft Word. Как вы хотите увидеть его внутри XML файла? В каком виде?
 

garrick

Lotus Team
26.10.2009
1 349
151
BIT
164
В виде аналогичном как делает выгрузку CreateDXLExporter.
Если вас не устраивают штатные средства (DXLExporter) или по каким-то причинам вы не можете ими воспользоваться, то вам надо изучать такие вещи, как MIME, BASE64 и т.к. вложение может быть сжатым (зависит от настроек клиента, где было сделано вложение), то ещё и LZ1.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
159
garrick
вложение может быть сжатым (зависит от настроек клиента, где было сделано вложение)
Немного оффтоп, но если файл крепился от пользователя с клиентом 8+, то файл сжимается всегда, даже если LZ1 в базе выключено.
Если файл крепился от сервера, то тут уже настройки работают для базы.
 

garrick

Lotus Team
26.10.2009
1 349
151
BIT
164
garrick

Немного оффтоп, но если файл крепился от пользователя с клиентом 8+, то файл сжимается всегда, даже если LZ1 в базе выключено.
Если файл крепился от сервера, то тут уже настройки работают для базы.
Согласен. Но, я думаю, что если выгрузить файл вложения на диск, то Lotus Notes сам должен "разжать" его в исходное состояние, если это необходимо. Потом этот файл перекодировать в BASE64 и то, что получится вставить в XML. Ну, и не забыть после этого удалить временный файл вложения.
 

seoman2

Green Team
17.02.2010
499
1
BIT
15
Вот к примеру есть у меня
obj = rtitem.EmbeddedObjects(0)
И я хочу obj загнать в текстовую переменную как BASE64.
ка кподключать функцию notesStreamToBase64(obj) ?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!