public static XMLGuideFile internalise( File src ) throws MVDException
	{
		try
		{
			XMLGuideFile guide = new XMLGuideFile();
			// use DOM3 to parse
			DOMImplementationRegistry registry = 
				DOMImplementationRegistry.newInstance();
			DOMImplementationLS impl = 
			    (DOMImplementationLS)registry.getDOMImplementation("LS");
			LSParser parser = impl.createLSParser(
				DOMImplementationLS.MODE_SYNCHRONOUS, null );
			LSInput input = impl.createLSInput();
			input.setByteStream( new FileInputStream(src) );
			Document document = parser.parse( input );
			// get the MVDGUIDE element
			Element root = document.getDocumentElement();
			NodeList nl = root.getChildNodes();
			for ( int i=0;i<nl.getLength();i++ )
			{
				org.w3c.dom.Node node = nl.item( i );
				if ( node.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE )
				{
					String nodeName = node.getNodeName();
					if ( nodeName != null && nodeName.equals(GROUPS) )
						guide.readGroups( (Element)node );
					if ( nodeName != null && nodeName.equals(VERSIONS) )
						guide.readVersions( (Element)node );
					if ( nodeName != null && nodeName.equals(DESCRIPTION) )
						guide.description = node.getTextContent();
				}
			}
			return guide;
		}
		catch ( Exception e )
		{
			throw new MVDException( e );
		}
	}