Я довольно новичок в Groovy, и на самом деле только что узнал об этом вчера. Я создаю сайт с помощью статического генератора сайтов MkDocs , и новое внутреннее требование приводит к тому, что мне приходится разделять текущий сайт на три разных контейнера сайта, чтобы обеспечить уникальные поисковые индексы и так далее. Об этом все заботятся и строят с использованием Jenkins, и он отлично работает.
Это решение, к сожалению, приводит к трем разным картам сайтов, которые мне нужно объединить, и мне было предложено изучить Groovy. Я получил большую часть приведенного ниже кода из Groovy - объединяющего XML-узлы , и я не получил никакого другого результата, кроме первой карты сайта, записанной в моем файле. Любые предложения, что может быть не так?
//Define XML objects to parse, set namespace to false.
def sm1 = new XmlSlurper( false, false ).parse(new File('C://test/site-1/sitemap.xml'))
def sm2 = new XmlSlurper( false, false ).parse(new File('C://test/site-2/sitemap.xml'))
def sm3 = new XmlSlurper( false, false ).parse(new File('C://test/site-3/sitemap.xml'))
//Define the output file.
def output = new File ('C://test/sitemap.xml')
//Append url-nodes from sitemap 2 to sitemap 1 urlset.
sm2.'**'.findAll{it.name() == 'url'}.collect{ sm1.urlset.appendNode(it)}
//Append url-nodes from sitemap 3 to sitemap 1 urlset.
sm3.'**'.findAll{it.name() == 'url'}.collect{ sm1.urlset.appendNode(it)}
//Define what to write to file.
def content = groovy.xml.XmlUtil.serialize(sm1)
//Write to file.
output.newWriter().withWriter { w ->
w << content
}
/ сайт-1 / sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://site/</loc>
<lastmod>2019-01-18</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>
/ сайт-2 / sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://site/site-2/</loc>
<lastmod>2019-01-18</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://site/site-2/section/</loc>
<lastmod>2019-01-18</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>
/ сайт-3 / sitemap.xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://site/site-3/</loc>
<lastmod>2019-01-18</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://site/site-3/section/</loc>
<lastmod>2019-01-18</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>
Ожидаемый результат
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://site/</loc>
<lastmod>2019-01-18</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://site/site-2/</loc>
<lastmod>2019-01-18</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://site/site-2/section/</loc>
<lastmod>2019-01-18</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://site/site-3/</loc>
<lastmod>2019-01-18</lastmod>
<changefreq>daily</changefreq>
</url>
<url>
<loc>https://site/site-3/section/</loc>
<lastmod>2019-01-18</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>
Токовый выход
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://site/</loc>
<lastmod>2019-01-18</lastmod>
<changefreq>daily</changefreq>
</url>
</urlset>