У меня проблема с доступом к содержимому XML-документа. Моя цель такова: Возьмите XML-источник и проанализируйте его в справедливом эквиваленте ассоциативного массива, а затем сохраните его как устойчивый объект.Как вы перемещаете и храните XML в приложении Blackberry Java?
XML-довольно прост:
<root>
<element>
<category_id>1</category_id>
<name>Cars</name>
</element>
<element>
<category_id>2</category_id>
<name>Boats</name>
</element>
</root>
Базовый класс Java ниже. Я почти просто вызываю save (xml) после ответа HTTP выше. Да, 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 = лодки}]
Любая помощь приветствуется.
Thanks