org.w3c.dom.Node.insertBefore: NullPointerException, Bug?

La descripción de org.w3c.dom.Node.insertBefore del Android-SDK dice lo siguiente:

public abstract Node insertBefore (Node newChild, Node refChild)<br>Inserts the node newChild before the existing child node refChild. <strong>If refChild is null, insert newChild at the end of the list of children.</strong>

Pero si hago lo siguiente, obtengo NullPointerException que ocurre en la implementación insertBefore:

if(doc != null && doc.getFirstChild() != null && tmpNode != null)
    doc.getFirstChild().insertBefore(tmpNode, null);

WARN/System.err(11029): at org.apache.harmony.xml.dom.InnerNodeImpl.insertBefore(InnerNodeImpl.java:86)

Intenté esto con Android 2.2 y Android 2.3.3!
Para mí parece ser un error. ¿Alguien puede confirmar / reproducir eso?


// edit (18.01.2012 13:05):
Creé un nuevo proyecto java, porque quería ver si esto funciona en una aplicación java:

public static void main(String[] args) {
    DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder;

        try {
            docBuilder = dbfac.newDocumentBuilder();
            Document d = docBuilder.newDocument();

            if(d != null){
                d.appendChild(d.createElement("root"));
                if(d.getFirstChild() != null){
                    d.getFirstChild().insertBefore(d.createElement("foo"), null);
                    System.out.println(d.getFirstChild().getFirstChild().getNodeName());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

Este código funciona perfectamente.

También creé un nuevo proyecto de Android para probar esto nuevamente:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    DocumentBuilderFactory dbfac = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder;

    try {
        docBuilder = dbfac.newDocumentBuilder();
        Document d = docBuilder.newDocument();

        if(d != null){
            d.appendChild(d.createElement("root"));
            if(d.getFirstChild() != null){
                d.getFirstChild().insertBefore(d.createElement("foo"), null);
                System.out.println(d.getFirstChild().getFirstChild().getNodeName());
            }
        }
    } catch (Exception e2) {
        e2.printStackTrace();
    }
}

Cuando la aplicación llega a la inserción Antes, se lanza la excepción que se muestra arriba.

Así que el mismo código funciona en Java normal, pero no en Android. Para mí, todavía parece que es un error en la implementación de armonía apache de org.w3c.dom. ¿Alguna otra idea?

Respuestas a la pregunta(6)

Su respuesta a la pregunta