parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Снова xdoc.

Crawl 26.09.2007 10:05 / 26.09.2007 10:08

Все, сдаюсь. Решил разобраться с XML немного и для практики выбрал всою Пикасу. XML который picasaweb.com передает выглядит примерно так:
$xdoc[^xdoc::create{<?xml version="1.0" encoding="windows-1251" ?>
<rss>
<channel>
<item>
<guid isPermaLink="false">http://picasaweb.google.com/data/entry/base/user/kozlov.m.a/albumid/5114308059646118129?alt=rss&amp;hl=en_US</guid>
<pubDate>Tue, 25 Sep 2007 19:06:09 +0000</pubDate>
<atom:updated>2007-09-26T00:47:22.000Z</atom:updated>
<category domain="http://schemas.google.com/g/2005#kind">http://schemas.google.com/photos/2007#album</category>
<title>2007-09-25 - Pre H2O</title>
<description>&lt;table&gt;&lt;tr&gt;&lt;td style="padding: 0 5px"&gt;&lt;a href="http://picasaweb.google.com/kozlov.m.a/20070925PreH2O"&gt;&lt;img style="border:1px solid #5C7FB9" src="http://lh5.google.com/kozlov.m.a/RvmsFV8fyPE/AAAAAAAABAk/p8tD67KR7ms/s160-c/20070925PreH2O.jpg" alt="2007-09-25 - Pre H2O"/&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;font color="#333333"&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#6B6B6B"&gt;Date: &lt;/font&gt;&lt;font color="#333333"&gt;Sep 25, 2007&lt;/font&gt;&lt;br/&gt;&lt;font color="#6B6B6B"&gt;Number of Photos in Album: &lt;/font&gt;&lt;font color="#333333"&gt;3&lt;/font&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://picasaweb.google.com/kozlov.m.a/20070925PreH2O"&gt;&lt;font color=\"#112ABB\"&gt;View Album&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</description>
<link>http://picasaweb.google.com/kozlov.m.a/20070925PreH2O</link>
<author>Mikhail</author>
<media:group>
<media:title type="plain">2007-09-25 - Pre H2O</media:title>
<media:description type="plain"/>
<media:keywords/>
<media:content url="http://lh5.google.com/kozlov.m.a/RvmsFV8fyPE/AAAAAAAABAk/p8tD67KR7ms/20070925PreH2O.jpg" type="image/jpeg" medium="image"/>
<media:thumbnail url="http://lh5.google.com/kozlov.m.a/RvmsFV8fyPE/AAAAAAAABAk/p8tD67KR7ms/s160-c/20070925PreH2O.jpg" height="160" width="160"/>
<media:credit>Mikhail</media:credit>
</media:group>
</item>
<item>
<guid isPermaLink="false">http://picasaweb.google.com/data/entry/base/user/kozlov.m.a/albumid/5114308059646118129?alt=rss&amp;hl=en_US</guid>
<pubDate>Tue, 25 Sep 2007 19:06:09 +0000</pubDate>
<atom:updated>2007-09-26T00:47:22.000Z</atom:updated>
<category domain="http://schemas.google.com/g/2005#kind">http://schemas.google.com/photos/2007#album</category>
<title>2007-09-25 - Pre H2O</title>
<description>&lt;table&gt;&lt;tr&gt;&lt;td style="padding: 0 5px"&gt;&lt;a href="http://picasaweb.google.com/kozlov.m.a/20070925PreH2O"&gt;&lt;img style="border:1px solid #5C7FB9" src="http://lh5.google.com/kozlov.m.a/RvmsFV8fyPE/AAAAAAAABAk/p8tD67KR7ms/s160-c/20070925PreH2O.jpg" alt="2007-09-25 - Pre H2O"/&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="top"&gt;&lt;p&gt;&lt;font color="#333333"&gt;&lt;/font&gt;&lt;/p&gt;&lt;font color="#6B6B6B"&gt;Date: &lt;/font&gt;&lt;font color="#333333"&gt;Sep 25, 2007&lt;/font&gt;&lt;br/&gt;&lt;font color="#6B6B6B"&gt;Number of Photos in Album: &lt;/font&gt;&lt;font color="#333333"&gt;3&lt;/font&gt;&lt;br/&gt;&lt;p&gt;&lt;a href="http://picasaweb.google.com/kozlov.m.a/20070925PreH2O"&gt;&lt;font color=\"#112ABB\"&gt;View Album&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</description>
<link>http://picasaweb.google.com/kozlov.m.a/20070925PreH2O</link>
<author>Mikhail</author>
<media:group>
<media:title type="plain">2007-09-25 - Pre H2O</media:title>
<media:description type="plain"/>
<media:keywords/>
<media:content url="http://lh5.google.com/kozlov.m.a/RvmsFV8fyPE/AAAAAAAABAk/p8tD67KR7ms/20070925PreH2O.jpg" type="image/jpeg" medium="image"/>
<media:thumbnail url="http://lh5.google.com/kozlov.m.a/RvmsFV8fyPE/AAAAAAAABAk/p8tD67KR7ms/s160-c/20070925PreH2O.jpg" height="160" width="160"/>
<media:credit>Mikhail</media:credit>
</media:group>
</item>
<!-- и так далее-->
</channel>
</rss>
}]
выбрать item и всех его детей я вроде как смог, но вот как выбрать в каждоом item всех детей group я ума не приложу.
все что я смог сделать:
$list[^xdoc.select[/rss/channel/item]]
	^for[i](0;$list-1){
		$node[$list.$i]
	   	<b>Title: ^node.selectString[string(title)]</b><br/>
		<b>Link: ^node.selectString[string(guid)]</b><br/>

		$NodeList[$node.childNodes]
		^if($NodeList is hash){
#всех детей group вытаскиваю тут вот таким тапорным методом:
			$groupList[$NodeList.8.childNodes]		
#но что если номер node поменятся?
			^for[g](0;$groupList-1){
				$group[$groupList.$g]
				^group.selectString[string(@url)]
			}[<br />]
		}
	}
все вышенписанное выведет примерно следущее:
Title: 2007-09-25 - Pre H2O
Link: http://picasaweb.google.com/data/entry/base/user/kozlov.m.a/albumid/5114308059646118129?alt=rss&hl=en_US
title
description
keywords
content http://lh5.google.com/kozlov.m.a/RvmsFV8fyPE/AAAAAAAABAk/p8tD67KR7ms/20070925PreH2O.jpg
thumbnail http://lh5.google.com/kozlov.m.a/RvmsFV8fyPE/AAAAAAAABAk/p8tD67KR7ms/s160-c/20070925PreH2O.jpg
credit

Title: 2007-09-25 - Pre H2O
Link: http://picasaweb.google.com/data/entry/base/user/kozlov.m.a/albumid/5114308059646118129?alt=rss&hl=en_US
title
description
keywords
content http://lh5.google.com/kozlov.m.a/RvmsFV8fyPE/AAAAAAAABAk/p8tD67KR7ms/20070925PreH2O.jpg
thumbnail http://lh5.google.com/kozlov.m.a/RvmsFV8fyPE/AAAAAAAABAk/p8tD67KR7ms/s160-c/20070925PreH2O.jpg
credit
Пошел спать, может утром что придет в голову, а может кто что дельное подскажет.