- 27.08.2008
- 8 015
- 613
по 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 просто как пример (в данном контексте - плевать - можно и текст)
обращу внимание на кодировку - в каментах отмечено
 
	 
	 
	 
	 
	 
 
		 (т.е. - без необъяснимой ошибки)
 (т.е. - без необъяснимой ошибки)
 в хслт применен "хак" т.к. html->text даст кучку текста без перевода строк
 в хслт применен "хак" т.к. html->text даст кучку текста без перевода строк 
 
		
 
 
		 
 
		 
 
		 
 
		 
	