【发布时间】:2015-04-17 09:49:24
【问题描述】:
我有一个返回 xml 的 url,但我在提取“链接”元素时遇到了一些问题。
<rss xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
<channel>
<item>
<id>123</id>
<title>my title</title>
<link>
http://example.org
</link>
</item>
</channel>
</rss>
我需要测试一下
Symfony\Component\DomCrawler\Crawler
这些是我的测试:
$crawler = $this->client->get('/my-feed');
$items = $crawler->filterXPath('//channel/item');
$this->assertGreaterThanOrEqual(1, $items->count()); // ok pass
// ...
$titles = $items->filterXPath('//title')->extract(array('_text'));
$this->assertContains("my title", $titles); // ok pass
// ...
$links = $items->filterXPath('//link')->extract(array('_text'));
$this->assertContains("example.org", $links); // KO!!! don't pass
var_dump($links); // empty string
“链接”是保留字?
【问题讨论】:
-
你能看看
$items->filterXPath('//link')包含什么吗? -
它返回一个crowler对象:
code object(Symfony\Component\DomCrawler\Crawler)#1968 (5) { ["uri":protected]=> NULL ["defaultNamespacePrefix":"Symfony\Component\DomCrawler\Crawler":private]=> string(7) "default" ["namespaces":"Symfony\Component\DomCrawler\Crawler":private]=> array(0) { } ["baseHref":"Symfony\Component\DomCrawler\Crawler":private]=> NULL ["storage":"SplObjectStorage":private]=> array(1) { ["0000000049a37b5b000000002da5082f"]=> array(2) { ["obj"]=> object(DOMElement)#1970 (0) { } ["inf"]=> NULL } } } -
您的 RSS xml 代码已损坏
标签: php xml unit-testing symfony domcrawler