2011-05-13 65 views
0

目前我有下面的代碼將數據放在哈希中。 我的問題:我必須將哪個值放在!!! SOMETHING !!!中。 代碼只需讀取一個元素標籤並將其值插入散列表中。XML到散列表

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(); 
    } 


} 
+0

你可以使用'null',儘管如果你的表沒有存儲鍵值對,那麼你最好使用'HashSet'。 [編輯]對不起,'null'不會作爲'Hashtable'的值。使用任何你不關心的對象,那不會是嚴重的內存泄漏。 – 2011-05-13 12:32:48

+0

那麼,如果我想複製一切,我可以自己分解它。但我只需要一個很好的例子來知道該怎麼做。我看到一個帳戶信息和交易的例子,但它沒有幫助我,因爲我沒有添加任何東西。 – Eve 2011-05-13 12:58:57

+0

這段代碼搞砸了。什麼是ElementTag1?在java變量中,不要以大寫字母開頭。你的錯誤現在是愚弄stackoverflow的語法突出顯示。 – 2011-05-13 13:01:45

回答

1

你應該使用這些方法,我發現:

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/

How to retrieve element value of XML using Java?

0

你選擇了不正確的集合類型進行此操作,如果你想保存在Set你的元素標記值是的,它是更好地使用HashSet但是執行的HashSet約你嘗試這樣做,所以Set價值觀付諸HashMap像鑰匙,但你可以使用另一個集合,如ListQueue,Stack儘量爲你找到更好的。 也許SAX將更好地爲您DOM ...