XML код:Looping элементов XML по конкретному значению атрибута
<Plan InitialMin="100.00" MaxDrawAmount="1500.00" MonthlyRate="29.0000" PlanId="1" RoundDown="" TermMax="5" TierId="1" TierMultiplier=""/>
<Plan InitialMin="100.00" MaxDrawAmount="1500.00" MonthlyRate="27.0000" PlanId="1" RoundDown="" TermMax="5" TierId="2" TierMultiplier=""/>
<Plan InitialMin="100.00" MaxDrawAmount="1500.00" MonthlyRate="24.0000" PlanId="1" RoundDown="" TermMax="5" TierId="3" TierMultiplier=""/>
<Plan InitialMin="100.00" MaxDrawAmount="1500.00" MonthlyRate="20.0000" PlanId="1" RoundDown="" TermMax="5" TierId="4" TierMultiplier=""/>
<Plan InitialMin="100.00" MaxDrawAmount="1500.00" MonthlyRate="15.0000" PlanId="1" RoundDown="" TermMax="5" TierId="5" TierMultiplier=""/>
<Plan InitialMin="100.00" MaxDrawAmount="1500.00" MonthlyRate="24.0000" PlanId="2" RoundDown="50" TermMax="5" TierId="6" TierMultiplier="60.61"/>
<Plan InitialMin="100.00" MaxDrawAmount="1500.00" MonthlyRate="20.4000" PlanId="2" RoundDown="100" TermMax="5" TierId="7" TierMultiplier="71.52"/>
<Plan InitialMin="100.00" MaxDrawAmount="1500.00" MonthlyRate="16.2000" PlanId="2" RoundDown="100" TermMax="5" TierId="8" TierMultiplier="92.61"/>
<Plan InitialMin="100.00" MaxDrawAmount="1500.00" MonthlyRate="13.5000" PlanId="2" RoundDown="100" TermMax="5" TierId="9" TierMultiplier="112.84"/>
<Plan InitialMin="100.00" MaxDrawAmount="1500.00" MonthlyRate="10.5000" PlanId="2" RoundDown="100" TermMax="5" TierId="10" TierMultiplier="143.30"/>
<Plan InitialMin="100.00" MaxDrawAmount="950.00" MonthlyRate="24.0000" PlanId="3" RoundDown="50" TermMax="6" TierId="11" TierMultiplier="60.61"/>
<Plan InitialMin="1000.00" MaxDrawAmount="1400.00" MonthlyRate="20.4000" PlanId="3" RoundDown="100" TermMax="7" TierId="12" TierMultiplier="71.52"/>
<Plan InitialMin="1500.00" MaxDrawAmount="1900.00" MonthlyRate="16.2000" PlanId="3" RoundDown="100" TermMax="9" TierId="13" TierMultiplier="92.61"/>
<Plan InitialMin="2000.00" MaxDrawAmount="2400.00" MonthlyRate="13.5000" PlanId="3" RoundDown="100" TermMax="11" TierId="14" TierMultiplier="112.84"/>
<Plan InitialMin="2500.00" MaxDrawAmount="2500.00" MonthlyRate="10.5000" PlanId="3" RoundDown="100" TermMax="14" TierId="15" TierMultiplier="143.30"/>
<Plan InitialMin="100.00" MaxDrawAmount="950.00" MonthlyRate="19.2000" PlanId="5" RoundDown="50" TermMax="6" TierId="17" TierMultiplier="68.06"/>
<Plan InitialMin="1000.00" MaxDrawAmount="1400.00" MonthlyRate="20.4000" PlanId="5" RoundDown="100" TermMax="7" TierId="18" TierMultiplier="71.94"/>
<Plan InitialMin="1500.00" MaxDrawAmount="1900.00" MonthlyRate="16.2000" PlanId="5" RoundDown="100" TermMax="9" TierId="19" TierMultiplier="92.61"/>
<Plan InitialMin="2000.00" MaxDrawAmount="2400.00" MonthlyRate="13.5000" PlanId="5" RoundDown="100" TermMax="11" TierId="20" TierMultiplier="112.84"/>
<Plan InitialMin="2500.00" MaxDrawAmount="2500.00" MonthlyRate="10.5000" PlanId="5" RoundDown="100" TermMax="14" TierId="21" TierMultiplier="143.30"/>
В моей JavaScript я пытаюсь траверс XML элементы, которые имеют атрибут PlanId = «5» ONLY, а затем назначить переменные для каждого элемента плана к другим атрибутам, указанным ниже в моем коде цикла, однако я не могу получить только те элементы PlanId = "5" (LAST 5 lines) в моем XML выше. Любая помощь/направление будут оценены. Вот моя попытка цикла при получении на это:
planId = 5;
for (var i = 1; i <= planIdCount; i++) {
// Get Plan attributes for affordability calculations
tierID = Provenir.getValue("/Data/Request/Plan[" +i+ "]/PlanId="+planId+"/@*[name()='TierId']");
prov.log(0, "tierID: " + tierID);
tierMultiplier = Provenir.getValue("/Data/Request/Plan[" +i+ "]/PlanId="+planId+"/@*[name()='TierMultiplier']");
prov.log(0, "tierMultiplier: " + tierMultiplier);
config.Global_Variables.CalculatedAffordabilityLines[0].TierMultiplier.setValue(tierMultiplier);
monthlyRate = Provenir.getValue("/Data/Request/Plan[" +i+ "]/PlanId="+planId+"/@*[name()='MonthlyRate']");
prov.log(0, "monthlyRate: " + monthlyRate);
config.Global_Variables.CalculatedAffordabilityLines[0].MonthlyRate.setValue(monthlyRate);
roundDown = Provenir.getValue("/Data/Request/Plan[" +i+ "]/PlanId="+planId+"/@*[name()='RoundDown']");
config.Global_Variables.CalculatedAffordabilityLines[0].RoundDown.setValue(roundDown);
prov.log(0, "roundDown: " + roundDown);
maxDrawAmount = Provenir.getValue("/Data/Request/Plan[" +i+ "]/PlanId="+planId+"/@*[name()='MaxDrawAmount']");
config.Global_Variables.CalculatedAffordabilityLines[0].MaxDrawAmount.setValue(maxDrawAmount);
prov.log(0, "maxDrawAmount: " + maxDrawAmount);
termMax = Provenir.getValue("/Data/Request/Plan[" +i+ "]/PlanId="+planId+"/@*[name()='TermMax']");
config.Global_Variables.CalculatedAffordabilityLines[0].setColumn("gbeb23b1191604f5eb919d11192d5caf6", termMax);
prov.log(0, "termMax: " + termMax);
// Affordability calculations
maxLoan = config.Business_Logic.Scripts.Calculations.CalculateMaxLoan(mdi, termMax, monthlyRate);
// ***** 23012015 - MS - Per Robert, round to 2 decimal places. *****
maxLoan = Number(Math.round(maxLoan + "e+2") + "e-2").toFixed(2);
prov.log(0, "maxLoan: " + maxLoan);
config.Global_Variables.CalculatedAffordabilityLines[0].MaxLoan.setValue(maxLoan);
affordabilityLine = Math.floor(maxLoan/roundDown)*roundDown;
prov.log(0, "affordabilityLine: " + affordabilityLine);
config.Global_Variables.CalculatedAffordabilityLines[0].AffordabilityLine.setValue(affordabilityLine);
}
Почему не запрашивать эти элементы непосредственно вместо цикла по каждому элементу? – ray
На самом деле, я только пытаюсь перебрать элементы Plan, в которых есть PlanId = "5". Это динамический фрагмент кода, в котором я пытаюсь выполнить циклическое вычисление любого значения planId. В настоящее время работает только с PlanId = "5". Надеюсь, я ответил на ваш вопрос. Я не запрашиваю через SQL, если это то, о чем вы говорите. – Melinda
Я говорю о запросе XML с помощью 'document.querySelectorAll', чтобы получить интересующие вас элементы. См. Мой ответ и пример ниже, которые запрашивают PlanId 5 и выплескивают ежемесячный реестр каждого элемента. (Вы можете легко вычислить селектор запросов динамически вместо жесткого кодирования его на PlanId = 5, как он есть здесь.) – ray