Как отсортировать данные XML с помощью классического asp (vbscript) без xpath? - PullRequest
2 голосов
/ 16 июня 2009

    <rooms>     
        <room>
            <roomname>Single</roomname>
            <roomid>1</roomid>
            <Price>100</Price>
            <Adult>1</Adult>
            <child>0</child>
        </room> 
    </rooms>


    <rooms>
        <room>
            <roomname>Double</roomname>
            <roomid>2</roomid>
            <Price>200</Price>
            <Adult>2</Adult>
            <child>1</child>
        </room>
    </rooms>

    <rooms>
        <room>
            <roomname>Single</roomname>
            <roomid>3</roomid>
            <Price>150</Price>
            <Adult>1</Adult>
            <child>0</child>
        </room>
    </rooms>

</hotel>

мне нужно поставить вот так ... (используйте vbscript в классическом asp)

Отель:
Одно-100, Дважды 200, Итого 300

Одно-150, Дважды 200, Итого 350

Концепция: 1. Клиенту нужно 2 комнаты, 1-я комната 1 взрослый и 2-я комната 2 взрослых + 1 ребенок (на основе выше xml) 2. клиент может выбрать до 4 номеров, в каждом из которых максимум 4 взрослых и максимум 2 ребенка, для этого каждый клиентский запрос xml создается следующим образом:

например: клиенту нужно 3 комнаты, 1-я комната 1 взрослый, 2-я комната 2 взрослый + 1 ребенок и 3-я комната 3 взрослый, xml похож на это (номера генерируются в зависимости от наличия) ...

    <rooms>     
        <room>
            <roomname>Single</roomname>
            <roomid>1</roomid>
            <Price>100</Price>
            <Adult>1</Adult>
            <child>0</child>
        </room> 
    </rooms>


    <rooms>
        <room>
            <roomname>Double</roomname>
            <roomid>2</roomid>
            <Price>200</Price>
            <Adult>2</Adult>
            <child>1</child>
        </room>
    </rooms>

    <rooms>
        <room>
            <roomname>Single</roomname>
            <roomid>3</roomid>
            <Price>150</Price>
            <Adult>1</Adult>
            <child>0</child>
        </room>
    </rooms>

               <rooms>      
        <room>
            <roomname>Triple</roomname>
            <roomid>4</roomid>
            <Price>300</Price>
            <Adult>3</Adult>
            <child>0</child>
        </room> 
    </rooms>

</hotel>

в этом случае положить мне нужно, как это

Отель:
Одно-100, Дважды 200, Triple-300, Всего 600

Одно-150, Дважды 200, Triple-300, Итого 650

Я пытаюсь убрать с помощью vbscript, но какая-то причина принята, а другая нет

<%@ 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"    

for i= 1 to 3 '2 is noofrooms

adult1 ="1"
child1 ="0"
adult2 ="2"
child2 ="1"
adult3 ="3"
child3 ="0"
'adult4 ="4"
'child4 ="0"


for d=0 to 4 ' total nodes ( /rooms)

' this for 2 room cause
'ds ="(//HotelDetails/hotel/rooms/room[Adult='"&adult1&"' and child='"&child1&"'])["&i&"]|(//HotelDetails/hotel/rooms/room[Adult='"&adult2&"' and child='"&child2&"'])["&d&"]" 

' this for 3 room cause
ds ="(//HotelDetails/hotel/rooms/room[(Adult='"&adult1&"' and child='"&child1&"') ])["&i&"]|((//HotelDetails/hotel/rooms/room[(Adult='"&adult2&"' and child='"&child2&"')])|(//HotelDetails/hotel/rooms/room[(Adult='"&adult3&"' and child='"&child3&"')]))["&d&"]"


' this for 4 room cause
'ds ="(//HotelDetails/hotel/rooms/room[(Adult='"&adult1&"' and child='"&child1&"') ])["&i&"]|((//HotelDetails/hotel/rooms/room[(Adult='"&adult2&"' and child='"&child2&"')])|(//HotelDetails/hotel/rooms/room[(Adult='"&adult3&"' and child='"&child3&"')])|(//HotelDetails/hotel/rooms/room[(Adult='"&adult3&"' and child='"&child3&"')]))["&d&"]"



Set colNodes=doc.selectNodes (ds)
For Each objNode in colNodes

  response.write objNode.Text & VbCrLf 

Next

next


next

Else   
  Response.Write doc.parseError.reason   
End If

Плз помогите мне (взять вывод) решить эту проблему спасибо

1 Ответ

0 голосов
/ 16 июня 2009
...