I have an XML file with following tree structure.
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"> <channel> <title>Videos</title> <link>https://www.example.com/r/videos/</link> <description>A long description of the video.</description> <image>...</image> <atom:link rel="self" href="http://www.example.com/videos/.xml" type="application/rss+xml"/> <item> <title>The most used Jazz lick in history.</title> <link> http://www.example.com/ </link> <guid isPermaLink="true"> http://www.example.com/ </guid> <pubDate>Mon, 07 Sep 2015 14:43:34 +0000</pubDate> <description> <table> <tr> <td> <a href="http://www.example.com/"> <img src="http://www.example.com/.jpg" alt="The most used Jazz lick in history." title="The most used Jazz lick in history." /> </a> </td> <td> submitted by <a href="http://www.example.com/"> jcepiano </a> <br/> <a href="http://www.youtube.com/">[link]</a> <a href="http://www.example.com/"> [508 comments] </a> </td> </tr> </table> </description> <media:title>The most used Jazz lick in history.</media:title> <media:thumbnail url="http://example.jpg"/> </item> </channel> </rss> Here, the html table element is embedded inside XML and that's confusing me.
Now I want to pick the text node values for //channel/item/title and href value for //channel/item/description/table/tr/td[1]/a[1] (with a text node value = "[link]")
Above in 2nd case, I am looking for the value of 2nd a (with a text node value = "[link]"), inside 2nd td inside tr, table, description, item, channel.
I am using PHP DOMDocument();
I have been looking for a perfect solution for this for 2 days now, can you please let me know how would this happen?
Also I need to count the total number of items in the feed, right now I am doing like this:
... $queryResult = $xpathvar->query('//item/title'); $total = 1; foreach($queryResult as $result){ $total++; } echo $title; And I also need a reference link for XPath query selectors' rules.
Thanks in advance! :)
``(backticks) around inline code elements like tagnames, it becomes a bit easier to read and dissect the code from the English text. I have updated your question.