简体   繁体   中英

Get Element Value With Ordinal and Condition in XML

I'm trying to loop through my XML using JavaScript testing for 2 conditions in the XML. Since the XML is being traversed in an archaic and customized version of JavaScript, I need to refer to the XML using ordinals. Here is a sample of my XML. I want to get the current ID number from the XML where IsSelected = false.

    for(var x = 0; x < nCount; x++){
     if( SCRIPT_REFERENCE_TO_XML("/OptionalEquipment/EquipmentOption" + " 
       [" + x + "]/[IsSelected = 'false']")){
        removeRecs[x] = 
          SCRIPT_REFERENCE_TO_XML.getValue("/OptionalEquipment/EquipmentOption" + "[" + x + "]/@vehicleOptionId");
     }


            <OptionalEquipment>
            <EquipmentOption vehicleOptionId="7093735">
              <DisplayName>4-Cyl, GDI, 2.4 Liter</DisplayName>
              <VehicleOptionId>7093735</VehicleOptionId>
              <IsSelected>false</IsSelected>
              <OptionTypeDisplayName>Engine</OptionTypeDisplayName>
            </EquipmentOption>
            <EquipmentOption vehicleOptionId="7093790">
              <DisplayName>Auto, 6-Spd Shiftronic</DisplayName>
              <VehicleOptionId>7093790</VehicleOptionId>
              <IsSelected>true</IsSelected>
              <OptionTypeDisplayName>Transmission</OptionTypeDisplayName>
             </EquipmentOption>
            <EquipmentOption vehicleOptionId="7093801">
              <DisplayName>FWD</DisplayName>
              <VehicleOptionId>7093801</VehicleOptionId>
              <IsSelected>true</IsSelected>
              <OptionTypeDisplayName>Drivetrain</OptionTypeDisplayName>
             </EquipmentOption>
            <EquipmentOption vehicleOptionId="7093804">
              <DisplayName>AWD</DisplayName>
              <VehicleOptionId>7093804</VehicleOptionId>
              <IsSelected>false</IsSelected>
              <OptionTypeDisplayName>Drivetrain</OptionTypeDisplayName>
            </EquipmentOption>
            </OptionalEquipment>    

I'm not sure how to use an ordinal with a condition.

In a modern browser it could look like this:

 var XML = `<OptionalEquipment> <EquipmentOption vehicleOptionId="7093735"> <DisplayName>4-Cyl, GDI, 2.4 Liter</DisplayName> <VehicleOptionId>7093735</VehicleOptionId> <IsSelected>false</IsSelected> <OptionTypeDisplayName>Engine</OptionTypeDisplayName> </EquipmentOption> <EquipmentOption vehicleOptionId="7093790"> <DisplayName>Auto, 6-Spd Shiftronic</DisplayName> <VehicleOptionId>7093790</VehicleOptionId> <IsSelected>true</IsSelected> <OptionTypeDisplayName>Transmission</OptionTypeDisplayName> </EquipmentOption> <EquipmentOption vehicleOptionId="7093801"> <DisplayName>FWD</DisplayName> <VehicleOptionId>7093801</VehicleOptionId> <IsSelected>true</IsSelected> <OptionTypeDisplayName>Drivetrain</OptionTypeDisplayName> </EquipmentOption> <EquipmentOption vehicleOptionId="7093804"> <DisplayName>AWD</DisplayName> <VehicleOptionId>7093804</VehicleOptionId> <IsSelected>false</IsSelected> <OptionTypeDisplayName>Drivetrain</OptionTypeDisplayName> </EquipmentOption> </OptionalEquipment>` var oParser = new DOMParser(); var oDOM = oParser.parseFromString(XML, "application/xml"); var opts = [...oDOM.querySelectorAll("IsSelected")] .filter(node => node.textContent === "false") .map(notSel => notSel.previousElementSibling.textContent); console.log(opts) 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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