Извлечение значения атрибута из xml и повторное его использование для другого xml в powershell?

У меня вопрос, я хочу получить атрибут из одного XML и использовать одно и то же значение для другого XML. Звучит довольно легко, но мне нужно кое-что обойти. Мой первый XML выглядит вот так:

<!--?xml version="1.0" encoding="UTF-8"?-->
<ffprobe>
<streams>
 <stream index="0" codec_name="prores" codec_long_name="ProRes" codec_type="video" codec_time_base="1/24" codec_tag_string="apcs" codec_tag="0x73637061" has_b_frames="0" sample_aspect_ratio="0:1" display_aspect_ratio="0:1" pix_fmt="yuv422p10le" level="-99" r_frame_rate="24/1" avg_frame_rate="24/1" time_base="1/24" start_pts="0" start_time="0.000000" duration_ts="1152" duration="48.000000" bit_rate="13174677" nb_frames="1152" nb_read_frames="1152">
 <disposition default="1" dub="0" original="0" comment="0" lyrics="0" karaoke="0" forced="0" hearing_impaired="0" visual_impaired="0" clean_effects="0" attached_pic="0">
 <tag key="creation_time" value="2013-10-10 02:59:14">
 <tag key="language" value="eng">
 <tag key="handler_name" value="DataHandler">
 </tag></tag></tag></disposition></stream>
</streams>
</ffprobe>

Там я захватываю атрибут nb_frames и сохраняю его в параметре $totalframes:

$xmlpfad = [xml](Get-Content C:\Users\Administrator\Desktop\input_dcp\$filename+totalframes.xml)
 [string]$totalframes = $xmlpfad.ffprobe.streams.stream | select nb_frames

Теперь, когда я пытаюсь использовать это значение для моего второго XML, я получаю что-то вроде:

<numofrepetitions>@{nb_frames=1152}</numofrepetitions>

Но мне нужно только значение 1152, без @{nb_frames=} это возможно каким-то образом?

1 ответ

Ваша переменная totalframes будет объектом, который имеет свойство nb_frames.

Чтобы получить только значение свойства, вам нужно использовать параметр -ExpandProperty для командлета Select. Поэтому измените последнюю строку на:

[string]$totalframes = $xmlpfad.ffprobe.streams.stream | select -ExpandProperty nb_frames

licensed under cc by-sa 3.0 with attribution.