今天早上我在这里使用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。
非常感谢任何帮助。
谢谢, 阿德里安
答案 0 :(得分: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的事情; - )