Better way to this ?? Query database to xml
James Antill
james at fedoraproject.org
Sun Apr 5 16:25:42 UTC 2009
On Sun, 2009-04-05 at 03:40 -0700, Michael A. Peters wrote:
> The ugly string
>
> rpm -qa --qf '<package name="%{name}">\n \
> <epoch>%{epoch}</epoch>\n \
> <version>%{version}</version>\n \
> <release>%{release}</release>\n \
> <arch>%{arch}</arch> \
> <summary>%{summary}</summary>\n <vendor>%{vendor}</vendor>\n</package>\n'
>
> The issue - it can produce malformed xml because vendor string can and
> does sometimes contain < and >
>
> I'm thinking there probably is a better to do it with python straight
> from the database? Maybe even something already exists for this?
For yum I'd just do something like:
% cat /tmp/pkgs-xml.py
#! /usr/bin/python -tt
import sys
import yum
yb = yum.YumBase()
yb.conf.cache = 1
for pkg in yb.rpmdb.returnPackages(patterns=sys.argv[1:]):
print """\
<package name="%s">
<epoch>%s</epoch>
<version>%s</version>
<release>%s</release>
<arch>%s</arch>
<summary>%s</summary>
<vendor>%s</vendor>
</package>
""" % (pkg.name, pkg.epoch, pkg.version, pkg.release, pkg.arch,
yum.misc.to_xml(pkg.summary), yum.misc.to_xml(pkg.vendor))
...but if you can't rely on yum you could copy and paste (or rewrite)
all the yum specific bits and just use rpm-python.
--
James Antill <james at fedoraproject.org>
Fedora
More information about the Rpm-list
mailing list