Hallo pl,
Polymorphie? Wo? Ich sehe keine Klassenvererbung und keine Interfaces. Eins von beiden bräuchtest Du dafür schon.
Zum Code:
Du solltest deine Properties deklarieren.
URLSET, urlset und OPTS sollten private sein.
Nicht jede Variable muss ein Property sein. BUFFER sollte statt dessen lokale Variable sein und als Wert von urlset zurückgegeben werden. Das Ding ist temporär.
Die Namen einer öffentlichen Schnittstelle sollen so sprechend wie möglich sein. Sprechende Namen sind besser als jede Doku. Also - beispielsweise - toXmlString statt out, addUrl statt add, getUrlSetAsXmlFragment statt urlset und urlList statt BUFFER.
Wo findet der Kontextwechsel zu XML für die Zeichen &, ', ", < und > statt? Zumindest das & kann gern mal Teil einer URL sein, bei den vier anderen mag es weniger wichtig sein.
Die Parametrierbarbeit von UTF-8 und XML Version ist sinnlos. Sitemaps müssen UTF-8 codiert sein, und einen Sinn in einer XML 1.1 Sitemap sehe ich nicht, da kein Freitext enthalten sein darf und eine URL immer in XML 1.0 darstellbar ist.
Dass die Sitemap-Elemente lastmod, changefreq und priority nicht aufscheinen, ist sicherlich der Kürze des Beispiels geschuldet, oder?
Rolf
sumpsi - posui - clusi