по html -> text
вощем там с поэтессами и прочим
[DOUBLEPOST=1429289103,1429288883][/DOUBLEPOST]демонстрация оформлена через NotesStream просто как пример (в данном контексте - плевать - можно и текст)
обращу внимание на кодировку - в каментах отмечено
Код:
%REM
*********************************************
Agent test\ReadHTTP
Created Apr 16, 2015 by Mikhail Cholokov/CRUINTERNET
Description: Comments for Agent
%END REM
Option Public
Option Declare
Use "ErrorHandling"
%Include "lsxbeerr.lss"
'шаблон для получения только текста из нод
Const xslt=|<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="body">
<!-- process all the child elements of body in document order -->
<xsl:apply-templates Select="*"/>
</xsl:template>
<xsl:template match="br">
<xsl:text>
</xsl:text>
<xsl:apply-templates Select="*"/>
</xsl:template>
</xsl:stylesheet>|
Sub Initialize
On Error GoTo ErrH
Dim jSession As JavaSession
Dim jError As JavaError
Dim USER_AGENT As String, sURL As String, sCP As String
USER_AGENT = {Mozilla/5.0}
sCP={utf-8} 'предположим "универсальную" кодировку
'будьте осторожны в своих желания, может оказаться на сайте:
sCP={windows-1251}
sURL={http://second-ext.inttrust.ru/Site/itforum.nsf/f1eb228a7ae49970c3256a99004aff3d/1cf2925fb5a9460943256a4f0031af11?OpenDocument} 'первое что пришло в голову
Set jSession= New JAVASESSION
Dim url As Javaclass, urlobj As Javaobject, con As Javaobject, instrm As Javaobject
Set url=jSession.Getclass({java/net/URL})
Set urlobj=url.Createobject({(Ljava/lang/String;)V}, sURL)
'{HttpURLConnection}
Set con=urlobj.openConnection()
Call con.setRequestMethod({GET})
'add request header
Call con.setRequestProperty({User-Agent}, USER_AGENT)
Dim ret As Integer
ret=con.getResponseCode()
Print {ret code:} ret
Set instrm=con.getInputStream()
'Set instrm=urlobj.openStream() 'вариант если все вышеописанное не нужно ;)
Print {estimate of the number of bytes:} instrm.available()
Dim inreader, inbuffer, tmpclass As Javaclass
Set tmpclass=jSession.GetClass({java/io/InputStreamReader})
Set inreader=tmpclass.CreateObject({(Ljava/io/InputStream;)V}, instrm)
'не будем полагаться на милось ОС, с кодировкой sCP
Set inreader=tmpclass.CreateObject({(Ljava/io/InputStream;Ljava/lang/String;)V}, instrm, sCP)
Set tmpclass=jSession.GetClass({java/io/BufferedReader})
Set inbuffer=tmpclass.CreateObject({(Ljava/io/Reader;)V},inreader)
Dim XML_in As NotesStream, ses As New NotesSession
Set XML_in=ses.CreateStream
Dim txt As String, sres As String, latch As Boolean, v
' sres={<?xml version="1.0" encoding="utf-8"?>}
XML_in.Writetext(sres)
v=inbuffer.readLine()
Do While Not IsEmpty(v)
txt=CStr(v)
XML_in.Writetext(txt)
' Print txt
'для подробностей в ошибке - раскоментить
' sres=sres+txt
v=inbuffer.readLine()
Loop
XML_in.Position=0
Dim XSL_ss As NotesStream
Set XSL_ss=ses.CreateStream
XSL_ss.Writetext(xslt)
XSL_ss.Position=0
Dim XML_out As NotesStream
Set XML_out=ses.CreateStream
'ифали будет использоватся Process и файл для вывода - ракаментить
' If Not XML_out.Open({/test.txt}) Then
' Error 1024, {file is not opened}
' End If
XML_out.Truncate
Dim transformer As NotesXSLTransformer
Set transformer=ses.CreateXSLTransformer()
'ифали будет использоватся Process - ракаментить
'Set transformer=ses.CreateXSLTransformer(XML_in, xslt, XML_out)
transformer.InputValidationOption=VALIDATE_NEVER
'отрубаем эррекцию обработчика на всякие нестыковки в XML_in
transformer.Exitonfirstfatalerror=False
'на всяк случай, хотя общего обработчика и transformer.Log хватит за глаза
On Error lsERR_NOTES_XSLT_INPUT_OBJECT GoTo err_IN
On Error lsERR_NOTES_XSLT_OUTPUT_OBJECT GoTo err_OUT
On Error lsERR_NOTES_XSLT_STYLESHEET_OBJECT GoTo err_SS
'transformer.Process
'любуемся на мессадж, если в экран влезет..., а если нет - Ctrl-C/Ctrl-V - в блокнот
MsgBox transformer.Transform(XML_in, XSL_ss)
'MsgBox transformer.Transform(XML_in, GetXSL({smartXSL}))
Quit:
Exit Sub
err_IN:
MessageBox "XSL Input error", , "XSLTransformer Process"
Exit Sub
err_OUT:
MessageBox "XSL Output error", , "XSLTransformer Process"
Exit Sub
err_SS:
MessageBox "Style Sheet error", , "XSLTransformer Process"
Exit Sub
ErrH:
Dim s As String
If Not transformer Is Nothing Then s=transformer.Log()
Error Err, RaiseError
'вывод лога и исходного, хотя.. - не так важно :)
'Error Err, RaiseError&Chr(10) &s & Chr(10) &sres
End Sub
[DOUBLEPOST=1429289103,1429288883][/DOUBLEPOST]демонстрация оформлена через NotesStream просто как пример (в данном контексте - плевать - можно и текст)
обращу внимание на кодировку - в каментах отмечено