Форум сайта python.su
0
есть такой файл xml:
<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.amadey-print.ru/</loc> <changefreq>1</changefreq> <lastmod>2</lastmod> </url> <url> <loc>http://www.amadey-print.ru/dostavka</loc> <lastmod>3</lastmod> <changefreq>4</changefreq> </url> <url> <loc>http://www.amadey-print.ru/faq</loc> <lastmod>5</lastmod> <changefreq>6</changefreq> </url> </urlset>
from xml.etree import ElementTree as ET import re ET.register_namespace('', "http://www.sitemaps.org/schemas/sitemap/0.9") with open("sitemap.xml","r") as f: tree = ET.parse(f) root = tree.getroot() for element in root: for tag in element: if re.search('loc$',tag.tag) == None: element.remove(tag) tree.write('sitemap2.xml')
import re import lxml.etree as ET from xml.etree.ElementTree import tostring xml_str = '''<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.amadey-print.ru/</loc> <changefreq>1</changefreq> <lastmod>2</lastmod> </url> <url> <loc>http://www.amadey-print.ru/dostavka</loc> <lastmod>3</lastmod> <changefreq>4</changefreq> </url> </urlset>''' root = ET.fromstring(xml_str.encode()) for element in root: for tag in element: if not re.search('loc$', tag.tag): # if 'loc' not in tag.tag: tag.getparent().remove(tag) print(tostring(root))
Отредактировано rayzor (Окт. 17, 2015 21:36:42)
Офлайн
857
>>> from xml.etree import ElementTree as ET >>> >>> s = '''\ ... <?xml version="1.0" encoding="UTF-8"?> ... <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> ... <url> ... <loc>http://www.amadey-print.ru/</loc> ... <changefreq>1</changefreq> ... <lastmod>2</lastmod> ... </url> ... <url> ... <loc>http://www.amadey-print.ru/dostavka</loc> ... <lastmod>3</lastmod> ... <changefreq>4</changefreq> ... </url> ... <url> ... <loc>http://www.amadey-print.ru/faq</loc> ... <lastmod>5</lastmod> ... <changefreq>6</changefreq> ... </url> ... </urlset>''' >>> >>> root = ET.fromstring(s) >>> >>> for i in root: ... while len(i) > 1: ... del i[-1] ... >>> ET.register_namespace('', 'http://www.sitemaps.org/schemas/sitemap/0.9') >>> out = ET.tostring(root, encoding='unicode') >>> >>> print(out) <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"> <url> <loc>http://www.amadey-print.ru/</loc> </url> <url> <loc>http://www.amadey-print.ru/dostavka</loc> </url> <url> <loc>http://www.amadey-print.ru/faq</loc> </url> </urlset> >>>
Отредактировано py.user.next (Окт. 18, 2015 02:47:45)
Офлайн