Everything boils down to patterns and function construction (there are tutorials about it, take a look):
XMLtest = {
XMLElement["YO", {}, 2],
XMLElement[ "BA", {}, {
XMLElement["YO", {}, {
XMLElement["BA", {}, 2]}], XMLElement["BA", {}, 2]}]
}
Block[{XMLElement},
XMLElement["YO", _, {content__XMLElement}] := content;
XMLElement["YO", _, _] := Sequence[];
XMLtest
]
{XMLElement[ "BA", {}, {
XMLElement["BA", {}, 2], XMLElement["BA", {}, 2]}]}