Package thredds.catalog2.xml.parser.stax

Source Code of thredds.catalog2.xml.parser.stax.StaxParserUtils

package thredds.catalog2.xml.parser.stax;

import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.events.XMLEvent;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import java.util.Map;
import java.io.Reader;
import java.io.StringReader;

/**
* _more_
*
* @author edavis
* @since 4.0
*/
class StaxParserUtils
{
  private StaxParserUtils() {}

  static String wrapContentXmlInXmlDocRootElement( String rootElementName, Map<String,String> rootElementAttributes,
                                                   String contentXml )
  {
    StringBuilder sb = new StringBuilder()
            .append( "<?xml version='1.0' encoding='UTF-8'?>\n" )
            .append( "<" ).append( rootElementName )
            .append( " xmlns='http://www.unidata.ucar.edu/namespaces/thredds/InvCatalog/v1.0'\n" );
    if ( rootElementAttributes != null )
      for ( Map.Entry<String,String> atts : rootElementAttributes.entrySet())
        sb.append( " ").append( atts.getKey()).append( "='").append( atts.getValue()).append( "'");
    if ( contentXml == null || contentXml.isEmpty())
      sb.append( " />");
    else
    {
      sb.append( ">\n" )
              .append( contentXml )
              .append( "</" ).append( rootElementName ).append( ">" );
    }
    return sb.toString();
  }

  static XMLEventReader createXmlEventReaderOnXmlString( String xml, String docBaseUri )
          throws XMLStreamException
  {
    Reader stringReader = new StringReader( xml );
    Source source = new StreamSource( stringReader, docBaseUri.toString() );
    XMLInputFactory factory = XMLInputFactory.newInstance();
    factory.setProperty( "javax.xml.stream.isCoalescing", Boolean.TRUE );
    factory.setProperty( "javax.xml.stream.supportDTD", Boolean.FALSE );

    return factory.createXMLEventReader( source );
  }

  static void advanceReaderToFirstStartElement( XMLEventReader reader )
          throws XMLStreamException
  {
    while ( reader.hasNext() )
    {
      XMLEvent event = reader.peek();
      if ( event.isStartElement() )
        break;
      else if ( event.isCharacters() )
        event = reader.nextEvent();
      else if ( event.isStartDocument() )
        event = reader.nextEvent();
      else
        throw new IllegalStateException( "Unexpected event [" + event + "]." );
    }
  }
}
TOP

Related Classes of thredds.catalog2.xml.parser.stax.StaxParserUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.