# Best way to transform text into number in a big array

I have a big array of data that I imported from a lot of XML files. To get the data, among other manipulations, I use this function:

Cases[xml,XMLElement[nodeName,_,a_]-> a,\[Infinity]]


When I get my final array, I have a lot of number fields that are as String and that I need to convert into Number. To do that I created this function:

clean[data_]:=Map[If[NumberQ@ToExpression[#],ToExpression[#],#]&,data,{-1}]


The problem is that I have strings with "??" characters, so if o use clean on it as for example:

clean[{"asd??asd", "123.3"}]


Mathematica try to interpret the first element as context ones. And I get:

Globalasd


How to avoid it? How can I improve my clean function, or the way I load de XML?

-

Rather than applying ToExpression and then NumberQ, perhaps you could just use StringMatchQ with NumberString in the first place.
StringMatchQ["assd??asd", NumberString]
`