[pyar] Como no meter caracteres raros en el xml al crear un sitemap con django?

Andres Riancho andres.riancho en gmail.com
Mar Jun 2 22:10:37 ART 2015


No se si lo parsean los crawlers de Google/Yahoo, pero en XML para
poner datos "raros" se usa CDATA

Aun en algunos casos super-especiales como \0 el CDATA no alcanza, no
deberias igual llegar a este caso porque en una URL eso deberia estar
URL-encoded como %00

2015-06-02 21:13 GMT-03:00 Emiliano Dalla Verde Marcozzi
<edvm en fedoraproject.org>:
> Buenas lista,
> Les cuento que al generar un sitemap usando django, ala:
>
> from django.contrib.sitemaps import Sitemap
> class ProductSitemap(Sitemap):
>     def items(self):
>         return Products.objects.all()
>
> Genera un xml inválido por una url como la siguiente (char raro luego de
> dopvstar):
> <loc>http://...app/vendor/bayashi/product/dopvstar^B/version/00..</loc>.
>
> Dando un error como el siguiente:
> This page contains the following errors:
> error on line 3 at column 535170: PCDATA invalid Char value 2
>
> Mirando el código de Sitemap, encuentro que tiene un método get_urls:
> https://github.com/django/django/blob/master/django/contrib/sitemaps/__init__.py#L75
>
> Con lo cual escribí una clase que herede de Sitemap y pise este método para
> chequear cada url y ver si es "metible en un xml"
>
> class MySitemap(Sitemap):
>     def get_urls(self, page=1, site=None, protocol=None):
>         urls = super(SecuritySitemap, self).get_urls(page, site, protocol)
>         # aca debería chequear url por url para ver si es "xml-able"
>         # ...
>         return urls
>
> Si no es "xml-able" estimo voy a ignorar la url y seguir con la siguiente.
> Las preguntas son:
> 1- Como puedo verificar si un dato es válido para meterlo en el xml?
> 2- Alguna otra forma de hacer esto en Django? Me refiero a generar siempre
> un sitemap/documento xml válido.
>
> Desde ya muchas gracias!,
> Emiliano.
>
> --
> Broken code @ https://github.com/edvm
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar



-- 
Andrés Riancho
Project Leader at w3af - http://w3af.org/
Web Application Attack and Audit Framework
Twitter: @w3af
GPG: 0x93C344F3


More information about the pyar mailing list