/******************************************************************************* * Copyright (c) 2008, 2010 Broadcom Corp. and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * James Blackburn (Broadcom Corp.) - Initial API and implementation *******************************************************************************/ package org.eclipse.cdt.core.settings.model; import org.eclipse.cdt.internal.core.settings.model.xml.XmlStorageElement; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * This class serves as a bridge from Xml Document trees to * ICStorageElement trees. * * This allows importing of old style Xml trees into ICStorageElement * based project descriptions * * @noextend This class is not intended to be subclassed by clients. * @since 5.1 */ public class XmlStorageUtil { /** * Return an ICStorageElement tree based around the specified * document * * N.B. the tree is backed by the passed in document * so care should be taken to ensure that the tree is only * subsequently through the ICStorageElement interface * * The ICStorageElement tree is based on the first Element * found in the Document * @param doc * @return ICStorageElement tree or null if impossible */ public static ICStorageElement createCStorageTree(Document doc) { NodeList list = doc.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { if (list.item(i).getNodeType() == Node.ELEMENT_NODE) { return createCStorageTree((Element)list.item(i)); } } return null; } /** * Return an ICStorageElement tree based around the specified * Element. * * NB the returned ICStorageElement is backed by the passed in * Element which should only be modified via the ICStorageElement * interface subsequent to this conversion. * * @param el input XML element * @return ICStorageElement tree */ public static ICStorageElement createCStorageTree(Element el) { return new XmlStorageElement(el); } }