Is this ok? I feel like it could be a lot cleaner and nicer. I'm going to add a <varying> tag next.
Couple of suggestions you may want to consider:
1. Encapsulate the code that extracts the text from between the XML tags into a helper method:
- you can then write a unit-test to make sure that chunk works
- the code that's doing the actual parsing will then be a lot cleaner (and therefore less buggy / easier to maintain)
- and you won't be cut-and-pasting and hard-coding the end index when you add further functionality, further reducing chances of cock-ups
2. Avoid duplicating the indexOf() call - OK the performance of doing it twice is probably hardly game-breaking but it's good practice.
3. Is there a reason you're not just throwing exceptions for the cases where the file is not valid (no <version> tag)? You'll have to check elsewhere that the vertex/fragment shader is potentially empty which (presumably) is a pretty fatal scenario, so you might as well handle that explicitly with an exception.