0
我有一個具有metadata.xml文件:紅寶石引入nokogiri不讀我的XML文件
<MediaItem ActualEndTime="8/2/2017 5:05:01 PM" ActualStartTime="8/2/2017 4:00:01 PM" Clip="False" ClipEndTime="1/1/0001 12:00:00 AM" ClipParentId="00000000-0000-0000-0000-000000000000" ClipStartTime="1/1/0001 12:00:00 AM" CreatedDate="1/1/0001 12:00:00 AM" DateAdded="1/1/0001 12:00:00 AM" Duration="01:04:59.8290000" FileFormat="0" FileSize="0" Genre="Interview" GuideEndTime="8/2/2017 5:00:00 PM" GuideStartTime="8/2/2017 4:00:00 PM" MovieId="00000000-0000-0000-0000-000000000000" MovieYear="0" NumParts="0" OriginalAirDate="8/2/2017 12:00:00 AM" OriginalFileSize="3636725627" PartNum="0" RecordingType="Episodic" ShowSqueeze="True" TargetEndTime="8/2/2017 5:05:00 PM" TargetStartTime="8/2/2017 4:00:00 PM" UserId="" VideoHeight="0" VideoWidth="0" />
如何使用Ruby和引入nokogiri解析呢?
我已經試過:
f = File.open path
puts "f : #{f}"
metadata = {}
doc = Nokogiri::XML(f)
puts "doc : #{doc}"
p = doc.xpath("//ActualStartTime")
puts "p : #{p}"
puts "++++++++++++++++++++++++++++++++++++++"
,但我得到這樣的輸出:
f : #<File:0x00000002755c40>
doc : <?xml version="1.0"?>
p :
+++++++++++++++++++++++++++++++++++++++++++
我缺少什麼?我想獲得ActualStartTime值,Duration值和Genre值。
更新
metadata = {}
f = File.read(path)
puts "f : #{f}"
doc = Nokogiri::XML(f)
p = doc.xpath("//@ActualStartTime")
puts "p : #{p}"
metadata['Duration'] = doc.xpath("//MediaItem/@Duration")
puts "metadata['Duration'] : #{metadata['Duration']}"
輸出:
f : <MediaItem ActualEndTime="8/2/2017 5:05:01 PM" ActualStartTime="8/2/2017 4:00:01 PM" Clip="False" ClipEndTime="1/1/0001 12:00:00 AM" ClipParentId="00000000-0000-0000-0000-000000000000" ClipStartTime="1/1/0001 12:00:00 AM" CreatedDate="1/1/0001 12:00:00 AM" DateAdded="1/1/0001 12:00:00 AM" Duration="01:04:59.8290000" FileFormat="0" FileSize="0" Genre="Interview" GuideEndTime="8/2/2017 5:00:00 PM" GuideStartTime="8/2/2017 4:00:00 PM" MovieId="00000000-0000-0000-0000-000000000000" MovieYear="0" NumParts="0" OriginalAirDate="8/2/2017 12:00:00 AM" OriginalFileSize="3636725627" PartNum="0" RecordingType="Episodic" ShowSqueeze="True" TargetEndTime="8/2/2017 5:05:00 PM" TargetStartTime="8/2/2017 4:00:00 PM" UserId="" VideoHeight="0" VideoWidth="0" />
p :
metadata['Duration'] :
...或者,如果您需要進行更具體的搜索,那麼'「// MediaItem/@ ActualStartTime」 –
@Simple Lime謝謝,但解決方案部分正常。我更新了這個問題。 – mamesaye
@Tom Lord答案不起作用。我更新了這個問題。 – mamesaye