Re: Microsoft.XMLHTTP
От: basch12345  
Дата: 31.03.06 15:36
Оценка: 2 (1)
Здравствуйте, Shroo, Вы писали:


S> Добрый день!

S> Появилась следующая задача. Распарсить rss на обычном ASP.


<%@ CODEPAGE=65001 %>
<%
'ASP-файл сохранять в UTF-8!!!

Response.Charset = "utf-8" 


Function LoadRSS(RSS_link)

    Set http = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
    http.open "GET", RSS_link, False
    http.setRequestHeader "User-Agent", "agent007"
    http.send
    Set xmlDoc = http.ResponseXML
    Set http = Nothing     
  
    'или можно ещё так, работает намного надежнее:
    'set xmlDoc = Server.CreateObject("Msxml2.DOMDocument")
    'xmlDoc.async = false
    'xmlDoc.setProperty "ServerHTTPRequest", true
    'xmlDoc.validateOnParse = false
    'xmlDoc.load RSS_link

    if xmlDoc.parseError.errorCode <> 0 then
             Set myErr = xmlDoc.parseError
             Response.write(myErr.reason)
             Exit Function
    end if
 

    Set objNodeList = xmlDoc.getElementsByTagName("channel")
    Set objNode = objNodeList.item(0)
    If TypeName(objNode.selectSingleNode("title")) <> "Nothing" then
       ch_title = objNode.selectSingleNode("title").text
    End if

    Set XmlDoc = Nothing
    Set objNodeList = Nothing
    Set objNode = Nothing
      
    Response.write(ch_title) 
      
      
End Function
%>
Microsoft.XMLHTTP
От: Shroo  
Дата: 31.03.06 11:29
Оценка:
Добрый день!
Появилась следующая задача. Распарсить rss на обычном ASP.

Я соорудил что-то такое:

  var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  function PostOrder()
  {
    var url = "http://somesite/y.xml";
    xmlhttp.Open("GET", url, false); 
    xmlhttp.setRequestHeader("Content-Type", "text/html; charset=windows-1251"); // or charset=utf-8  or utf-16
    xmlhttp.onreadystatechange=HandleStateChange;
    xmlhttp.Send();
  }

  function HandleStateChange()
  {
    if (xmlhttp.readyState == 4)
    { 
      res = xmlhttp.responseText;
        
      var table = "<table border=1>\n";
          table += res;
            table += "</table>";
            
      Response.Write(table);

    }
  }

  PostOrder();


какая-то фигня с кодировкой . Все русские символы возвращаются в виде знаков вопроса.
Возвращаемый XML воде бы имеет кодировку 1251

<?xml version="1.0" encoding="Windows-1251" ?>


Уже и так менял и так. Не знаю дальше куда копать.


К сожаленю поиск мне не помог, мучаюсь второй день.

PS. Может вообще есть какие-то альтернативные способы решения проблемы.

Заранее спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.