1

今天早上我在这里使用 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'

以及各种组合。我实际上得到了很多这些链接,但我只关心其中一个是否有这个 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 回答