I have an XML file like this:
xml = XMLObject["Document"][
XMLElement[
"whatever", {}, {
{XMLElement["forename", {"type" -> "first"}, {"Adrian"}],
XMLElement["surname", {}, {"Adgar"}]
},
{XMLElement["forename", {"type" -> "first"}, {"Babar"}],
XMLElement["forename", {"type" -> "middle"}, {"Barbados"}],
XMLElement["surname", {}, {"Bode"}]
},
{XMLElement["forename", {"type" -> "first"}, {"Charly"}],
XMLElement["surname", {}, {"Chimp"}]
}
}]]
I'd like to extract the first names, middle names if any, and surnames.
Using repeated patterns, I would have expected this to work:
Cases[xml, {(XMLElement["forename", _, x_])...,
XMLElement["surname", {}, y_]} -> {x, y}, Infinity]
(* {{{"Adrian"}, {"Adgar"}}, {{"Charly"}, {"Chimp"}}} *)
however it misses the middle names. Instead, I would like an output like:
{{"Adrian", "Adgar"}, {"Babar", "Barbados", "Bode"}, {"Charly", "Chimp"}}
I am also wondering what is wrong in this syntax.