的Android的SDK的org.w3c.dom.Node.insertBefore的描述說以下內容:org.w3c.dom.Node.insertBefore:NullPointerException,Bug?
public abstract Node insertBefore (Node newChild, Node refChild)
Inserts the node newChild before the existing child node refChild. If refChild is null, insert newChild at the end of the list of children.
但是,如果我這樣做,我得到的是發生在執行的insertBefore NullPointerException異常:
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)
我想這與Android 2.2和Android 2.3.3!
對我來說,它似乎是一個錯誤。任何人都可以確認/重現嗎?
//編輯(18.01.2012 13:05):
我創建了一個新的Java項目,因爲我想看看,如果這個工程在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();
}
}
此代碼完美的作品。
我還創建了一個新的Android項目再次測試此:
@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();
}
}
當應用達到的insertBefore,上面顯示的異常被拋出。
所以相同的代碼在普通的Java中工作,但不在Android中。對我來說,它似乎仍然是org.w3c.dom的apache協調實現中的一個錯誤。任何其他想法?
我敢打賭這是你的代碼,而不是圖書館。瞭解到你是這個問題是一個漫長而艱難的教訓。 – duffymo 2012-01-17 10:26:14
當然,這可能是我的錯。那爲什麼我先在這裏提出這個問題(在我提交錯誤之前)並尋求幫助或某人重現此問題。但那不是我在android中使用org.w3c.dom的apache-harmony實現時遇到的第一個問題 - 在實現中還存在其他錯誤或缺陷,這些問題已經得到開發人員的確認,並使我的生活更加艱難。所以也許有一些偏見^^ – Marc 2012-01-17 10:34:23