Optionalquery: QueryParamsGET a feed path and parse the XML reply. The Bundesrat feeds require the
view=renderXml render parameter; without it the server returns its HTML
shell, which we detect and reject with a helpful BundesratParseError.
NOTE: the response Content-Type does not decide whether the body is a feed. The
Government Site Builder CMS is inconsistent about the media type (feeds have been
seen as text/plain, application/xml, text/html), so we sniff the body — an
<!doctype html> / <html> prefix is the HTML-shell guard — rather than trust the
header. Don't "harden" this by validating Content-Type; it would reject valid feeds.
Only its charset is used, to decode a body that declares no encoding (decodeXml).
Optionalquery: QueryParamsLike getXml, but also returns the root element's name.
Optionalquery: QueryParamsPerform a GET with Accept negotiation and transient-error retries. Redirects are NOT followed — a 3xx surfaces as an error (the canonical host answers directly).
Optionalquery: QueryParams
Build a fully-qualified URL from a path and optional query parameters.