• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Dxl -> Xml

garrick

Lotus Team
26.10.2009
1 352
151
BIT
202
Существуют ли какие-либо быстрые способы преобразования DXL в стандарный XML (data), понятный другим программам. Например:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">DXL</div></div><div class="sp-body"><div class="sp-content">
Код:
<?xml version='1.0'?>
<!DOCTYPE document SYSTEM 'xmlschemas/domino_8_5_3.dtd'>
<document xmlns='http://www.lotus.com/dxl' version='8.5' maintenanceversion='3.3' replicaid='C325777A004B7013' form='Person'>
<item name='ZIP'><text>601903</text></item>
<item name='REGION'><text>Владимирская</text></item>
<item name='REGION_CODE'><text>3300000000000</text></item>
<item name='AREA_CODE'><text/></item>
<item name='CITY_CODE'><text>3300000400000</text></item>
<item name='LOCALITY'><text/></item>
<item name='LOCALITY_CODE'><text/></item>
<item name='STREET_CODE'><text>33000004000000200</text></item>
</document>

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">XML (что-то типа такого)</div></div><div class="sp-body"><div class="sp-content">
Код:
<?xml version="1.0" encoding="UTF-8"?>
<xfdf xmlns="http://ns.adobe.com/xfdf/" xml:space="preserve">
<fields>
<field name="1"><value>Project 1</value></field>
<field name='ZIP'><value>601903</value></field>
<field name='REGION'><value>Владимирская</value></field>
<field name='REGION_CODE'><value>3300000000000</value></field>
<field name='AREA_CODE'><value/></field>
<field name='CITY_CODE'><value>3300000400000</value></field>
<field name='LOCALITY'><value/></field>
<field> name='LOCALITY_CODE'><value/></field>
<field name='STREET_CODE'><value>33000004000000200</value></field>
</fields>
</xfdf>

Про XSLTransformer в курсе. Может чего готовое есть? Надо ещё и заголовок переписывать, и с кодировками косяки какие-то.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
а подсунуть свою схему не пробывали?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
ХСЛТ и есть самый готовый - просто преобразуете в "нужный" нэймспэйс (определяете свой)
смотрите примеры для ФОП (здесь)
 

garrick

Lotus Team
26.10.2009
1 352
151
BIT
202
Блин! Не первый раз пытаюсь сделать что-то полезное с помощью DXLExporter/DXLImporter. Оно вообще на что-нибудь годится кроме выгрузки/загрузки из самого себя в себя. Проще принтами правильный XML самому сделать, чем потом порядок навести в этой каше. Кто-нибудь вообще этим пользуется? Научите меня.
P.S. К вопросу это не относится. Вопрос решен путём прямого формирования XML нужной структуры, без DXL посредника.
 

savl

Lotus Team
28.10.2011
2 601
312
BIT
216
garrick
Для построение структуры XML, лично я использовал либо Dom parser, либо Sax parser, так можно свою структуру генерить.
Через Print/Write тоже можно, но на любителя.
DXLExporter использовал для сравнения документов, ну и дизайна.
Через DXLImporter можно подгружать дизайн в базу.
 

garrick

Lotus Team
26.10.2009
1 352
151
BIT
202
Через Print/Write тоже можно, но на любителя.
Нужно было просто выгрузить данные для последующей загрузки в другую (не Lotus) систему, которая умеет принимать данные в XML формате, причём соответствие полей настраивается. Но читать DXL она отказалась наотрез.
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">В итоге написал такой простой код:</div></div><div class="sp-body"><div class="sp-content">
Код:
	Dim session As New NotesSession
Dim db As NotesDatabase
Dim unprocessed As NotesDocumentCollection		
Dim f As Integer

Set db = session.currentdatabase
Set unprocessed = db.unprocesseddocuments
Dim doc As NotesDocument
Set doc = unprocessed.getfirstdocument	

f = FreeFile
Open "c:\dxl\data.xml" For Output As f charset = "UTF-8"
Print #f, {<?xml version="1.0" encoding="UTF-8"?>}
Print #f, {<DATA>}
Print #f, Tab(4) + {<} + doc.Form(0) + {>} 
ForAll i In doc.Items
If Left(i.Name, 1) <> "$" Then 
Print #f, Tab(8) + {<} + i.Name + {>} + i.Text + {</} + i.Name + {>}
End if	
End ForAll
Print #f, Tab(4) + {</} + doc.Form(0) + {>}
Print #f, {</DATA>}	
Close f

В итоге DXL опять в пролёте.
DXLExporter использовал для сравнения документов, ну и дизайна.
Через DXLImporter можно подгружать дизайн в базу.
Вот именно. Я так понимаю ни на что другое оно и не годится.
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Вот именно. Я так понимаю ни на что другое оно и не годится.
для правки элементов дизайна и РТполей незаменим
а в других случайх лучше самому побайтово сделать
 
Мы в соцсетях:

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