in commons-digester3-core/src/main/java/org/apache/commons/digester3/NodeCreateRule.java [374:410]
public void begin( final String namespaceURI, final String name, final Attributes attributes )
throws Exception
{
final Document doc = documentBuilder.newDocument();
NodeBuilder builder;
if ( nodeType == Node.ELEMENT_NODE )
{
Element element;
if ( getDigester().getNamespaceAware() )
{
element = doc.createElementNS( namespaceURI, name );
for ( int i = 0; i < attributes.getLength(); i++ )
{
element.setAttributeNS( attributes.getURI( i ), attributes.getQName( i ),
attributes.getValue( i ) );
}
}
else
{
element = doc.createElement( name );
for ( int i = 0; i < attributes.getLength(); i++ )
{
element.setAttribute( attributes.getQName( i ), attributes.getValue( i ) );
}
}
builder = new NodeBuilder( doc, element );
}
else
{
builder = new NodeBuilder( doc, doc.createDocumentFragment() );
}
// the NodeBuilder constructor has already saved the original
// value of the digester's custom content handler (expected to
// be null, but we save it just in case). So now we just
// need to tell the digester to forward events to the builder.
getDigester().setCustomContentHandler( builder );
}