I know this looks a little bit strange, but sometimes syntactic text manipulation gives better performance, than semantic one. Matching an xml against a schema is not always the best. If I have understood it correctly, the second "error" needed to be found is more semantic one, a schema validation would not be straightforward.
These two regular expressions could identify the problematic elements:
1)
<(.*?)>\s*</\1>
2)
<designator value="(.*?)">(?!(\1<)).*?</desigantor>
Ok, these could be refined, but if the xml is well formed, should be enough.
The only thing that could be considered in addition is the size of the file. I suppose it can be fragmented on load if needed, since it has a structure. But the size of several hundred MiB looks not extremely much - of course, this depends on the machine. The framework will be able to process it, but might use more virtual memory.
By the way, if you decide to take this path, there are also implementations of regex over streams out there, like this one:
http://www.developer.com/net/article.php/3719741/Building-a-Regular-Expression-Stream-Search-with-the-NET-Framework.htm[
^]
Good luck!