【问题标题】:XML to HashtableXML 到哈希表
【发布时间】:2011-05-13 12:26:28
【问题描述】:

目前我有下面的代码将数据放入哈希中。 我的问题:我必须在 !!!SOMETHING !!! 的部分中添加哪个值。 代码只需读取一个元素标签并将其值插入哈希表中。

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


}

【问题讨论】:

  • 您可以使用null,但如果您的表不存储键值对,您最好使用HashSetEdit 抱歉,null 不能作为 Hashtable 的值。使用您不关心的任何对象,这不会造成严重的内存泄漏。
  • 如果我想全部复制,我可以自己拆开。但我只需要一个很好的例子就知道该怎么做。我看到了一个有关帐户信息和交易的示例,但它对我没有帮助,因为我没有添加任何内容。
  • 这段代码搞砸了。 ElementTag1 是什么?在 java 变量中,永远不要以大写字母开头。你的错误现在欺骗了 stackoverflow 的语法高亮。
  • ElementTag1 是我放入的全局变量,在代码中它仍然接受标签。它指的是我定义的 xmltag 名称。

标签: java xml hashtable rft


【解决方案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?

【讨论】:

    【解决方案2】:

    您为此操作选择了不正确的集合类型,如果您想将元素标记值保存在Set 中,是的,最好使用HashSet,但您尝试执行HashSet 的方法大致相同,所以@ 的值987654324@ 放入 HashMap 喜欢的键,但你可以使用另一个集合,如 ListQueueStack 尝试为你找到更好的。 也许SAX 对你来说会更好DOM ...

    【讨论】:

      【解决方案3】:

      为了让事情变得更简单、更健壮,您可以改用Properties,它具有Hashtable 的底层实现(实际上是对其进行了扩展),并且可以从XML 导入和导出(参见loadFromXMLstoreToXML 方法)。详情请见http://www.ibm.com/developerworks/java/library/j-tiger02254/index.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-26
        • 2011-01-11
        • 2023-03-31
        • 2011-04-13
        • 2011-10-27
        相关资源
        最近更新 更多