[英]XML to Hashtable
目前,我有下面的代码将数据放入哈希中。 我的问题:我必须在!!! SOMETHING !!!的那一部分中输入哪个值。 该代码仅需读取一个elementtag并将其值插入哈希表中。
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();
}
}
您应该使用我发现的这些方法:
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/
和
你选择了不正确的集合类型进行此操作,如果你想保存你的元素标记值Set
是的,它是更好地使用HashSet
,但实现的HashSet
约你尝试这样做,这样的值Set
付诸HashMap
像钥匙,但你可以使用另一个集合,如List
, Queue
, Stack
尝试为您找到更好的选择。 也许SAX
对您来说是更好的DOM
...
为了使事情变得更轻松和更健壮,可以改用Properties ,它具有Hashtable的基础实现(实际上是对其进行扩展),并且可以从XML导入和导出XML(请参见loadFromXML
和storeToXML
方法)。 有关详细信息,请参见http://www.ibm.com/developerworks/java/library/j-tiger02254/index.html 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.