2011-05-13 58 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 ...