Я правильно понимаю, что на выходе честный xml? Если да, то лучше уж написать XSLT шаблон выбирающий то что нужно и конвертирующий в то что нужно и просто использовать xsltproc
Пример:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="UTF-8" media-type="text/plain"/>
<xsl:template match="/">
<xsl:for-each select="//email">
<xsl:text>Found new email: </xsl:text>
<xsl:value-of select="."/>
<xsl:text>; </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Сохрани это в файл template.xsl и попробуй запустить
curl -u ${login}:${psswd} -s "https://mail.google.com/mail/feed/atom" | xsltproc template.xsl -
Пользователь решил продолжить мысль 20 Сентября 2010, 13:50:37:
Решил попробовать, и обнаружил, что нужна небольшая магия с namespace. Вот это преобразование работает как надо:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:atom="http://purl.org/atom/ns#">
<xsl:output method="text" encoding="UTF-8" media-type="text/plain"/>
<xsl:template match="/">
<xsl:for-each select="//atom:author">
<xsl:text>Found new email: </xsl:text>
<xsl:value-of select="./atom:email"/>
<xsl:text>; </xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>