2015-10-23 2 views
-1

Я использую Powershell 3.0 и Windows Server 2012Наполнение Powershell массива из XML

Два массива заселенного из файла XML:

$a = @($Data.MessageGroup.Dataset[0].Series[1] | % {$_.Obs} | select TIME_PERIOD, OBS_VALUE) 
$b = @($Data.MessageGroup.Dataset[0].Series[3] | % {$_.Obs} | select TIME_PERIOD, OBS_VALUE) 

$a имеет 680 строк значений дат в этом формате: 2015-09-30
$b имеет 680 строк значений, такие как: 3051.4

Я могу перечислить элементы из каждого обра ay индивидуально без проблем. Проблема в том, когда я пытаюсь присоединиться к массивам.

Объедините два массива:

$c = $a, $b 

$c[0] перечислены все даты;
$c[1] перечисляет все значения.
Но когда я пытаюсь присоединиться к двум массивам, он ничего не производит.

$c[0] -join " " 
+1

Как конечный результат должен выглядеть? – PetSerAl

+0

'$ с = @ ($ а) + @ ($ б)' –

+0

Что я ищу это: 2015-08-31 \t 3060,3 2015-09-30 \t 3051,4 Что код из swestner представил производит это: @ {TIME_PERIOD = 2015-08-31} @ {OBS_VALUE = 3060.3} – Riskworks

ответ

0

будет ли это работать?

$a = @($Data.MessageGroup.Dataset[0].Series[1] | % {$_.Obs} | select TIME_PERIOD, OBS_VALUE) 
$b = @($Data.MessageGroup.Dataset[0].Series[3] | % {$_.Obs} | select TIME_PERIOD, OBS_VALUE) 
$i=0 
$a | % {$_.TIME_PERIOD + " " + $b[$i++].OBS_VALUE} 

Например

$a = @(1, 2, 3) 
$b = @('a', 'b', 'c') 
$i=0 
$a | % {"$_ " + $b[$i++]} 

Производит

1 a 
2 b 
3 c 
+0

Вероятно, вы должны сделать свой пример более XML-y, чтобы избежать его помечания или нисходящего; не сразу очевидно, что это относится к вопросу. –

+0

Интересно, что ваш код вызвал следующее: @ {TIME_PERIOD = 2015-08-31} @ {OBS_VALUE = 3060.3} @ {TIME_PERIOD = 2015-09-30} @ {OBS_VALUE = 3051.4} Я ожидал только значений из массивов например 2015-08-31 3060.3 2015-09-30 3051.4 Нужно ли обрабатывать массив по-разному, чтобы получить только значения? – Riskworks

+0

Прости, я пропустил выбор. Я обновлю ответ – swestner

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