Сортировка данных XML в классическом ASP - PullRequest
2 голосов
/ 14 июня 2009

Я хочу отсортировать ниже xml, исходя из значения «Взрослый и ребенок» (мне нужно взять значение «Взрослый и ребенок» как постоянное):

<HotelDetails>
  <hotel>
    <rooms>
      <room>
        <roomname>Single</roomname> 
        <Price>100</Price> 
        <Adult>1</Adult> 
        <child>0</child> 
      </room>
    </rooms>
    <rooms>
      <room>
        <roomname>Single</roomname> 
        <Price>150</Price> 
        <Adult>1</Adult> 
        <child>0</child> 
      </room>
    </rooms>
    <rooms>
      <room>
        <roomname>Double</roomname> 
        <Price>200</Price> 
        <Adult>2</Adult> 
        <child>1</child> 
      </room>
    </rooms>   
  </hotel>
</HotelDetails>

дать:

Hotel :   
Single-100,
Double-200,
<b>Total 300</b>

Single-150,
Double-200,
<b>Total 350</b>

Я пытаюсь разобраться с приведенным ниже кодом, но он идет как константа (отдельные данные). У кого-нибудь есть идея сортировать выше XML, использовать что-то вроде следующего кода?

<%@ Language="VBScript" CodePage="65001"%>  
<%  
Response.ContentType = "text/plain; charset=UTF-8"  

Dim doc   
Set doc = Server.CreateObject("Msxml2.DOMDocument.3.0") 
doc.async = False  

If doc.load(Server.MapPath("ee.xml")) Then   
  doc.setProperty "SelectionLanguage", "XPath"

  Dim xpath
  xpath = "HotelDetails/hotel/rooms[not(room/Adult= preceding-sibling::rooms/room/Adult)]/room/Adult"

  For Each Adult in doc.selectNodes(xpath) 
    Response.Write "Hotel" & VbCrLf
    Response.Write Adult.ChildNodes.Item(0).Text & VbCrLf  
  Next
Else   
  Response.Write doc.parseError.reason   
End If 
%>  

Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 15 июня 2009

Другая возможность состоит в том, чтобы использовать отключенный набор записей ADODB и использовать инструменты ADODB для сортировки и извлечения.

Хорошее место для начала (код на VB):

  • Как получить набор записей ADO из XML

    Dim oStream As ADODB.Stream
    Set oStream = New ADODB.Stream
    
    oStream.Open
    oStream.WriteText sXML   'Give the XML string to the ADO Stream
    
    oStream.Position = 0    'Set the stream position to the start
    
    Dim oRecordset As ADODB.Recordset
    Set oRecordset = New ADODB.Recordset
    
    oRecordset.Open oStream    'Open a recordset from the stream
    
    oStream.Close
    Set oStream = Nothing
    
    Set RecordsetFromXMLString = oRecordset  'Return the recordset
    
    Set oRecordset = Nothing
    
0 голосов
/ 14 июня 2009

Было бы это полезно http://www.developer.com/xml/article.php/1560361 , Он показывает, как использовать XSL-преобразование для вывода XML, отсортированного в виде HTML, но я думаю, что вы можете изменить вывод XSL на XML ()

Если эти записи поступают с SQL Server, гораздо проще вывести их отсортированными уже .. Вы пытаетесь сделать кеширование ??

Если вы пытаетесь сделать кеширование, проверьте мой пост: http://www.moretechtips.net/2008/11/object-oriented-data-caching-for.html

...