我在訪問XML文檔的內容時遇到問題。 我的目標是這樣的: 獲取一個XML源並將其解析爲關聯數組的一個公平等價物,然後將其存儲爲一個可持久對象。如何在Blackberry Java應用程序中遍歷和存儲XML?
的XML是非常簡單的:下面
<root>
<element>
<category_id>1</category_id>
<name>Cars</name>
</element>
<element>
<category_id>2</category_id>
<name>Boats</name>
</element>
</root>
基本的Java類。我幾乎在上面的http響應後調用save(xml)。是的,XML格式正確。
import java.io.IOException;
import java.util.Hashtable;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.util.Vector;
import net.rim.device.api.system.PersistentObject;
import net.rim.device.api.system.PersistentStore;
import net.rim.device.api.xml.parsers.DocumentBuilder;
import net.rim.device.api.xml.parsers.DocumentBuilderFactory;
public class database{
private static PersistentObject storeVenue;
static final long key = 0x2ba5f8081f7ef332L;
public Hashtable hashtable;
public Vector venue_list;
String _node,_element;
public database()
{
storeVenue = PersistentStore.getPersistentObject(key);
}
public void save(Document xml)
{
venue_list = new Vector();
storeVenue.setContents(venue_list);
Hashtable categories = new Hashtable();
try{
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory. newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
docBuilder.isValidating();
xml.getDocumentElement().normalize();
NodeList list=xml.getElementsByTagName("*");
_node=new String();
_element = new String();
for (int i=0;i<list.getLength();i++){
Node value=list.item(i).getChildNodes().item(0);
_node=list.item(i).getNodeName();
_element=value.getNodeValue();
categories.put(_element, _node);
}
}
catch (Exception e){
System.out.println(e.toString());
}
venue_list.addElement(categories);
storeVenue.commit();
}
上面的代碼是正在進行的工作,很可能是嚴重缺陷。但是,我現在已經呆了好幾天了。我永遠不會得到所有的子節點,或名稱/值對。 當我將矢量打印出來作爲字符串時,我通常會得到如下結果: [{= root,= element}] 就是這樣。否 「CATEGORY_ID」,無 「名」
理想情況下,我最終會與像 [{1 =車,2 =船}]
任何幫助表示讚賞。
謝謝