The standard method would be the tr command. XML can have (and usually does) extremely long lines, because whitespace is not really part of the XML specification. Most Unix text commands are line-based, and very long lines are likely to break things like sed or awk (on Linux they tend just to be a huge performance hit). tr does not have to care about lines at all, so it can handle this data well.
tr -d '[\r\n]' <inFile > outFile
However, I am concerned about your third "fonts" line, which you show as split. Taking out that newline will run the texts together without any whitespace. I know that Excel .xlsx files use newlines (and carriage returns) where there is multi-line text in a cell.
Why do you need to remove the whitespace? It should not cause any problems. In fact, I normally run XML through "xmllint --format", because that makes it viewable in editors. It reads back in Excel just fine: I have pretty-printed XML, imported it to Excel, written it back out as long lines, and done a cksum, and it was identical.
You can avoid the long-line problem in awk, by defining RS = ">";
There are always enough > in XML to avoid long lines. awk then sees each XML entity on a separate line, with at most one text item before it. Where there are genuine newlines, they will stay in the text, so you would see your third input as
some of\nthe data</fonts>
You can then gsub each NL or CR/LF to a SPACE and preserve the wording.
If you need that code in more detail, ask.
In case you wonder what Excel has to do with XML: an Excel file (.xlsx, .xlsm etc, not not .xls) is just a zip of a bunch of 20 or more XML files.