我使用xml_grep从xml文档导出文本。
所以我有一个像这样的xml文档:
<?xml version="1.0" encoding="UTF-8"?>
<Mediainfo version="0.7.52">
<File>
<track type="General">
<Complete_name>grm.mov</Complete_name>
<Format>MPEG-4</Format>
<Format_profile>QuickTime</Format_profile>
<Codec_ID>qt </Codec_ID>
<File_size>10.1 MiB</File_size>
<Duration>3s 600ms</Duration>
<Overall_bit_rate_mode>Variable</Overall_bit_rate_mode>
<Overall_bit_rate>23.5 Mbps</Overall_bit_rate>
<Encoded_date>UTC 2012-08-01 09:33:54</Encoded_date>
<Tagged_date>UTC 2012-08-01 09:34:00</Tagged_date>
<Writing_library>Apple QuickTime</Writing_library>
<TIM>00:00:00:00</TIM>
<TSC>25</TSC>
<TSZ>1</TSZ>
</track>
<track type="Video">
<ID>1</ID>
<Format>JPEG</Format>
<Codec_ID>mjpa</Codec_ID>
<Duration>3s 600ms</Duration>
<Bit_rate_mode>Variable</Bit_rate_mode>
<Bit_rate>23.5 Mbps</Bit_rate>
<Width>1 920 pixels</Width>
<Height>1 080 pixels</Height>
<Display_aspect_ratio>16:9</Display_aspect_ratio>
<Frame_rate_mode>Constant</Frame_rate_mode>
<Frame_rate>25.000 fps</Frame_rate>
<Scan_type>Interlaced</Scan_type>
<Scan_order>Bottom Field First</Scan_order>
<Compression_mode>Lossy</Compression_mode>
<Bits__Pixel_Frame_>0.453</Bits__Pixel_Frame_>
<Stream_size>10.1 MiB (100%)</Stream_size>
<Language>English</Language>
<Encoded_date>UTC 2012-08-01 09:33:54</Encoded_date>
<Tagged_date>UTC 2012-08-01 09:34:00</Tagged_date>
</track>
<track type="Menu">
<ID>2</ID>
<Language>English</Language>
<Encoded_date>UTC 2012-08-01 09:34:00</Encoded_date>
<Tagged_date>UTC 2012-08-01 09:34:00</Tagged_date>
</track>
</File>
</Mediainfo>
有两个名为'持续时间'的元素。一个位于<track type="General">
之下,另一个位于<track type="Video">
之下。我如何单独导出每个?
xml_grep 'Duration'
返回两个元素。我知道这是一个愚蠢的问题,但我无法弄明白。
提前谢谢你。
答案 0 :(得分:0)
你应该使用xpath
喜欢
$value1 = $xml->xpath('/file/track/@Video/Duration');
$value2 = $xml->xpath('/file/track/@General/Duration');
只是一个想法。
或类似的东西:
xml_grep -t '*[@attrib="pickme"]' *.xml or xml_grep2 -t '//*[@attrib="pickme"]' *.xml