1

今朝、REXML を使用してここで助けを得ることができました。その答えは、REXML について理解を深めるのに役立ちました。しかし、私は別の問題に遭遇し、それを理解できないようです。

私の応答は次のとおりです。

<?xml version="1.0"?>
<file>
<link a:size="2056833" a:mimeType="video/x-flv" a:bitrate="1150000.0" a:height="240" a:width="320" rel="content.alternate"> https://link.com</link>
</file>

だから、私がやりたいことは、a:mimeType が video/x-flv であることをアサートすることです

これが私が試したことです:

xmlDoc = REXML::Document.new(xml)
assert_equal xmlDoc.elements().to_a("file/link['@a:mimeType']").first.text, 'video/x-flv'

また:

assert xmlDoc.elements().to_a("file/link['@a:mimeType']").include? 'video/x-flv'

と様々な組み合わせ。私は実際にこれらのリンクの多くを取り戻しますが、そのうちの 1 つがこの mimeType を持っているかどうかだけを気にします。また、一部のリンクには mimeType がありません。

どんな助けでも大歓迎です。

ありがとう、エイドリアン

4

1 に答える 1

0

text要素のテキスト コンテンツ (タグ間のテキスト) を取得しています。「属性」にアクセスしたい。試す

xmlDoc.elements().to_a("file/link").first.attributes['a:mimeType']

いずれかのリンクに正しい mimeType があるかどうかを確認するには、要素の配列を mimeType 属性の配列に変換し、正しい値が含まれているかどうかを確認します。

xmlDoc.elements().to_a("file/link").map { | elem | elem.attributes['a:mimeType'] }.include? 'video/x-flv'

アップデート

または、はるかに簡単に、正しい値を持つ属性 mimeTypes を持つ要素があるかどうかを確認します。

xmlDoc.elements().to_a("file/link[@a:mimeType='video/x-flv']") != []

XPathについて教えてくれてありがとう;-)

于 2011-09-08T18:45:19.567 に答える