import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.sax.*;
import javax.xml.transform.stream.*;
import org.xml.sax.*;
import java.io.IOException;

public class Test2
{
    public static void main(String[] args)
    throws Exception
    {
        SAXTransformerFactory transfactory = (SAXTransformerFactory)SAXTransformerFactory.newInstance();
        TransformerHandler handler = transfactory.newTransformerHandler();
        DOMResult result = new DOMResult();
        handler.setResult(result);
        parse(new InputSource("a.xml"), handler);
        Transformer transformer=TransformerFactory.newInstance().newTransformer();
        transformer.transform(
                   new DOMSource(((org.w3c.dom.Element)result.getNode().getFirstChild()).getElementsByTagNameNS("http://apache.org/cocoon/sitemap/1.0","components").item(0)),
                        new StreamResult("b.xml"));
    }

    public static void parse(InputSource in, ContentHandler consumer)
    throws SAXException, IOException
    {
        SAXParserFactory factory = SAXParserFactory.newInstance();
        factory.setNamespaceAware(true);
        factory.setValidating(false);
        XMLReader reader;
        // Create the XMLReader
        try
        {
            reader = factory.newSAXParser().getXMLReader();
        }
        catch( ParserConfigurationException pce )
        {
            throw new SAXException( "Cannot produce a valid parser", pce );
        }
        if ( true ) {
            try
            {
                reader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
            }
            catch ( SAXException e )
            {
                System.out.println("SAX2 XMLReader does not support setting feature: "+
                                      "'http://xml.org/sax/features/namespace-prefixes'");
            }
        }

        reader.setContentHandler( consumer );

        reader.parse(in);

    }


}