简体   繁体   English

如何使用经典的 asp(vbscript) 对 xml 数据进行排序,而没有 xpath?

[英]How to sort xml data using classic asp(vbscript) with out xpath?

    <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>

i need out put like this...( use vbscript in classic asp )我需要这样放...(在经典 asp 中使用 vbscript)

Hotel:酒店:
Single-100, Double-200, Total 300单100,双200,合计300

Single-150, Double-200, Total 350单人150,双人200,合计350

concept is: 1. customer need 2 rooms, 1st room 1 adult and 2nd room 2adults + 1child ( based on above xml) 2. customer he can choose up to max 4 rooms, each rooms max adult is 4 and max child is 2, for that each customer request xml is generated like this概念是: 1. 客户需要 2 个房间,第一个房间 1 个成人,第二个房间 2 个成人 + 1 个孩子(基于以上 xml) 2. 客户最多可以选择 4 个房间,每个房间最多 4 个成人,最多 2 个孩子,为此,每个客户请求 xml 都是这样生成的

for example: customer need 3 rooms, 1st room 1 adult, 2nd room 2 adult +1child and 3rd room 3adult, xml is like this (rooms is generated based on the availability)...例如:客户需要 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>

in this cause out put i need like this出于这个原因,我需要这样

Hotel:酒店:
Single-100, Double-200, Triple-300, Total 600单人100、双人200、三人300、合计600

Single-150, Double-200, Triple-300, Total 650单人150,双人200,三人300,合计650

I try to take out using vbscript, but some cause is accepted but some cause not我尝试使用 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

Plz help me to (take output) solve this problem thanks请帮我(获取输出)解决这个问题谢谢

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM