XML в Hashtable - PullRequest
       12

XML в Hashtable

0 голосов
/ 13 мая 2011

В настоящее время у меня есть код ниже, чтобы поместить данные в хэш.Мой вопрос: какое значение я должен поставить в части ЧТО-ТО !!!Код должен прочитать только один тег элемента и вставить его значение в хеш-таблицу.

public void ReadXML(){
    try {

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(fileout);
        doc.getDocumentElement().normalize();
        Hashtable hash = new Hashtable();

        NodeList dataNodes = doc.getElementsByTagName("DataArea");
//      getChildNodes().item(0).getChildNodes();
        Element root = doc.getDocumentElement();
        String dataNodeIndex = root.toString();
        System.out.println("");

    for (int dataNodeIndex1 = 0; dataNodeIndex1 < dataNodes.getLength(); dataNodeIndex1++)
        {
            Node nodeName = dataNodes.item(dataNodeIndex1);

            if (nodeName.getNodeType() == Node.ELEMENT_NODE) {
                Element elementName = (Element) nodeName;
                NodeList elementNameList = elementName.getElementsByTagName(elementtag1);
                Element elementName2 = (Element) elementNameList.item(0);
                NodeList nameElement = elementName2.getChildNodes();
                System.out.println("NodeContent: "  + ((Node) nameElement.item(0)).getNodeValue());

            }
            hash.put(elementtag1, !!!SOMETHING!!!);

            System.out.println(hash);
        }       


    }



    catch(Exception e){ 
        e.printStackTrace();
    }


}

Ответы [ 3 ]

1 голос
/ 13 мая 2011

Вы должны использовать этот метод, который я нашел:

protected String getString(String tagName, Element element) {
    NodeList list = element.getElementsByTagName(tagName);
    if (list != null && list.getLength() > 0) {
        NodeList subList = list.item(0).getChildNodes();

        if (subList != null && subList.getLength() > 0) {
            return subList.item(0).getNodeValue();
        }
    }

    return null;
}

используйте это так:

if (NodeName.getNodeType() == Node.ELEMENT_NODE) {
    Element ElementName = (Element) NodeName;
    Hash.put(Elementtag1, getString(Elementtag1, ElementName));

}

Проверьте это:

http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/

и

Как получить значение элемента XML с помощью Java?

0 голосов
/ 13 мая 2011

Чтобы сделать вещи проще и надежнее, вы можете использовать взамен Properties , который имеет базовую реализацию Hashtable (фактически расширяет его) и может импортировать и экспортировать в / из XML (см. методы loadFromXML и storeToXML). Подробнее см. http://www.ibm.com/developerworks/java/library/j-tiger02254/index.html.

0 голосов
/ 13 мая 2011

Вы выбрали неверный тип коллекции для этой операции, если вы хотите сохранить значения тега элемента в Set да, лучше использовать HashSet, но реализацию HashSet примерно пытаетесь сделать, поэтому значения Set вставляет в HashMap подобные ключи, но вы можете использовать другую коллекцию, например List, Queue, Stack, чтобы попытаться найти лучшее для вас. А может быть, SAX будет лучше DOM для вас ...

...