Autor Zpráva
lopik
Profil
Dobrý deň, som v XML úplný amatér a v php samouk a potreboval by som poradiť s úpravou XML sitemapy pre google.
Potreboval by som prostredníctvom php skriptu vymazať všetky záznamy, ktoré obsahujú v <loc> "/blog/".
Sitemap:
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://www.domena.eu/</loc><changefreq>daily</changefreq><priority>1.0</priority></url>
<url><loc>https://www.domena.eu/blog/16-ako-vybrat</loc><changefreq>daily</changefreq><priority>1.0</priority></url>
<url><loc>https://www.domena.eu/blog/17-a</loc><changefreq>daily</changefreq><priority>1.0</priority></url>
<url><loc>https://www.domena.eu/cookie</loc><changefreq>daily</changefreq><priority>1.0</priority></url>
.
.
.
Potrebujem, aby výsledná mapa bola bez všetkých záznamov, kde sa nachádza výraz "/blog/" teda príklad vyššie by vyzeral takto:
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://www.domena.eu/</loc><changefreq>daily</changefreq><priority>1.0</priority></url>
<url><loc>https://www.domena.eu/cookie</loc><changefreq>daily</changefreq><priority>1.0</priority></url>
.
.
.
Ďakujem za rady a pomoc
RastyAmateur
Profil
lopik:
Tak jedna možnost (ta správná a ideální) by byla se naučit s nějakou knihovnou na práci s XML, a pak udělat něco jednoduchého typu:
- Načíst staré XML
- Vytvořit nové, prázdné XML

- Udělat for cyklus skrz záznamy ve starém XML
    - Pokud daný záznam neobsahuje "/blog/", přidat ho i do nového XML
    
- Uložit nové XML

Pak mě napadá i druhá možnost, která je sice jednodušší, ale zato není tak pěkná. Pokud ten XML soubor opravdu vypadá tak, jaks poslal, tedy na každém řádku je jeden záznam, tak si to XML můžeš načíst jako normální textový soubor a pak velice jednoduše odstranit všechny řádky, které obsahují substring "/blog/". To je něco, co se dá opravdu udělat na pár řádků kódu a nemusíš se kvůli tomu učit pracovat s XML nebo s nějakými knihovnami.

Dokonce pokud jde o to to udělat jednorázově pro nějaký statický soubor, tak to lze udělat i jedním příkazem v příkazové řádce (ale to už asi přeháním... :-) ):
$ cat test.xml
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://www.domena.eu/</loc><changefreq>daily</changefreq><priority>1.0</priority></url>
<url><loc>https://www.domena.eu/blog/16-ako-vybrat</loc><changefreq>daily</changefreq><priority>1.0</priority></url>
<url><loc>https://www.domena.eu/blog/17-a</loc><changefreq>daily</changefreq><priority>1.0</priority></url>
<url><loc>https://www.domena.eu/cookie</loc><changefreq>daily</changefreq><priority>1.0</priority></url>

$ cat test.xml | grep -v "/blog/"
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url><loc>https://www.domena.eu/</loc><changefreq>daily</changefreq><priority>1.0</priority></url>
<url><loc>https://www.domena.eu/cookie</loc><changefreq>daily</changefreq><priority>1.0</priority></url>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0