2014-09-07 4 views
1

Я довольно новичок в xml, я использую testcomplete с Javascript. Я вложен xml, я вставляю небольшую часть ниже.Извлечение данных из javascript

Я хотел бы извлечь код рулона и код столбца, когда categorytype category = «ExitRow» занятие бесплатное. Тип места для продажи - E.

<Row rowNumber="011"> 
        <RowCharacteristics> 
         <RowType category="ExitRow"/> 
        </RowCharacteristics> 
        <Seats> 
         <Seat occupation="Free" columnCode="A"> 
          <MarketingSeatType category="E"/> 
          <PhysicalSeatTypes> 
           <PhysicalSeatType category="E"/> 
          </PhysicalSeatTypes> 
         </Seat> 
         <Seat occupation="Free" columnCode="B"> 
          <MarketingSeatType category="E"/> 
          <PhysicalSeatTypes> 
           <PhysicalSeatType category="1A"/> 
           <PhysicalSeatType category="1B"/> 
           <PhysicalSeatType category="E"/> 
          </PhysicalSeatTypes> 
         </Seat> 
         <Seat occupation="Free" columnCode="C"> 
          <MarketingSeatType category="E"/> 
          <PhysicalSeatTypes> 
           <PhysicalSeatType category="1A"/> 
           <PhysicalSeatType category="1B"/> 
           <PhysicalSeatType category="E"/> 
          </PhysicalSeatTypes> 
         </Seat> 
         <Seat occupation="Free" columnCode="D"> 
          <MarketingSeatType category="E"/> 
          <PhysicalSeatTypes> 
           <PhysicalSeatType category="1A"/> 
           <PhysicalSeatType category="1B"/> 
           <PhysicalSeatType category="E"/> 
          </PhysicalSeatTypes> 
         </Seat> 
         <Seat occupation="Free" columnCode="E"> 
          <MarketingSeatType category="E"/> 
          <PhysicalSeatTypes> 
           <PhysicalSeatType category="1A"/> 
           <PhysicalSeatType category="1B"/> 
           <PhysicalSeatType category="E"/> 
          </PhysicalSeatTypes> 
         </Seat> 
         <Seat occupation="Free" columnCode="F"> 
          <MarketingSeatType category="E"/> 
          <PhysicalSeatTypes> 
           <PhysicalSeatType category="1A"/> 
           <PhysicalSeatType category="1B"/> 
           <PhysicalSeatType category="E"/> 
          </PhysicalSeatTypes> 
         </Seat> 
        </Seats> 
       </Row> 

Я написал код для открытия xml в тесте, но не уверен, что это правильно.

Doc = Sys.OleObject("Msxml2.DOMDocument.4.0"); 
Doc.async = false; 
Doc.load("d:\\MyFile.xml"); 

Node = Doc.documentElement; 

ответ

2

Лучший способ - использовать XPath. Вы можете найти множество примеров в this MSDN article.

Вот код, который должен работать для вас:

function test() 
{ 
    var Doc = Sys.OleObject("Msxml2.DOMDocument.4.0"); 
    Doc.async = false; 
    Doc.load("d:\\MyFile.xml"); 

    var row = Doc.selectSingleNode('//Row[RowCharacteristics/RowType/@category="ExitRow"]'); 
    var rowNumber = row.getAttribute("rowNumber"); 
    Log.Message("Row number is " + rowNumber); 

    var cCodes = row.selectNodes('Seats/Seat[@occupation="Free" and MarketingSeatType/@category="E"]/@columnCode'); 
    for (var i = 0; i < cCodes.length; i++) 
    Log.Message("Column code is " + cCodes.item(i).value); 
} 
+0

Того AWSOME Спасибо, я был в состоянии извлечь строку и столбец, используя приведенный выше код. На самом деле у меня есть несколько строк выхода, когда заполняется первая строка выхода, указанная выше программа вернула номер строки и имя столбца. :(Я мог бы проверить все строки выхода, как это сделать, и еще одно, я буду повторять процедуру, чтобы найти свободные места для нескольких пассажиров, есть ли какой-либо способ, когда я использовал место, которое я могу изменить занятие = заблокировано так что в следующий раз его снова не будет выбран. –

+0

working var numberofExitRow = Doc.selectNodes ('// Row [RowCharacteristics/RowType/@ category = "ExitRow"]') для (j = 0; j

+0

По-прежнему необходимо выяснить следующую часть, как изменить место на занятое после использования :) –

Смежные вопросы