in tools/simpleresgen/mono/ResXResourceReader.cs [144:203]
private void LoadData ()
{
hasht = new OrderedDictionary ();
hashtm = new OrderedDictionary ();
if (fileName != null) {
stream = File.OpenRead (fileName);
}
try {
xmlReader = null;
if (stream != null) {
xmlReader = new XmlTextReader (stream);
} else if (reader != null) {
xmlReader = new XmlTextReader (reader);
}
if (xmlReader == null) {
throw new InvalidOperationException ("ResourceReader is closed.");
}
xmlReader.WhitespaceHandling = WhitespaceHandling.None;
ResXHeader header = new ResXHeader ();
try {
while (xmlReader.Read ()) {
if (xmlReader.NodeType != XmlNodeType.Element)
continue;
switch (xmlReader.LocalName) {
case "resheader":
ParseHeaderNode (header);
break;
case "data":
ParseDataNode (false);
break;
case "metadata":
ParseDataNode (true);
break;
}
}
} catch (XmlException ex) {
throw new ArgumentException ("Invalid ResX input.", ex);
} catch (SerializationException ex) {
throw ex;
} catch (TargetInvocationException ex) {
throw ex;
} catch (Exception ex) {
XmlException xex = new XmlException (ex.Message, ex,
xmlReader.LineNumber, xmlReader.LinePosition);
throw new ArgumentException ("Invalid ResX input.", xex);
}
header.Verify ();
} finally {
if (fileName != null) {
stream.Close ();
stream = null;
}
xmlReader = null;
}
}