【发布时间】:2014-04-25 04:59:39
【问题描述】:
使用 DOM 解析器,我将属性值存储在 Java 中的 HashMap 中,然后根据需要检索它。有没有其他不使用地图的方法?
Xml 示例:
<?xml version="1.0" encoding="UTF-8"?>
<Main>
<SubMainLevels>
<SubMainLevel LineNo="1" arg2="122" RollNo="11" weight="14" folds="1" />
<SubMainLevel LineNo="2" arg2="123" RollNo="12" weight="12" folds="2" />
</SubMainLevels>
</Main>
我做了什么:
Map<String, String> x = new HashMap<String, String>();
getXmlAttr(){
Traverse till Main\SubMainLevels\SubMainLevel
for each SubMainLevel {
getAttribute() for all attributes LineNo,arg2,RollNo,weight,folds
concatenate strConcat = arg2+":"+RollNo+":"+weight+":"+folds
x.put(LineNo,strConcat);
}
}
retrieveAttrMap(HashMap x){
for each HashMap key{
strVal =x.get(key)
split strVal at ":"
//do stuff
}
}
【问题讨论】:
-
使用
Map有什么危害?您可以使用POJO类来存储属性,而不是使用字符串。在这种情况下,您不需要在检索属性值时每次都拆分字符串。 -
@Braj 正如你所说 “您可以使用 POJO 类来存储属性而不是使用字符串。在这种情况下,您不需要在检索属性时每次都拆分字符串value" 我正在输入 xml ,将其转换为
DOM document(inpDoc)然后调用getXmlValues我正在创建PojoClass类的对象并传递所有属性。然后我将此对象存储在一个以“LineNo”为键的哈希图中。 this 是您的建议吗?在其他链接中发布代码 sn-p,因为它在 cmets 中失去了格式 -
是的,你是对的,它是正确的方法,但是你在问题中提到的约束呢 - 有没有其他方法可以在不使用地图的情况下做到这一点。
-
@Braj 我想避免映射,因为我必须稍后拆分值。我按照您的建议使用 POJO 并在您的解决方案中显示以避免这种情况。所以我可以接受。如果您有其他实现相同的方法,请分享您的想法。否则这就足够了。[我是 java 新手,所以仍在探索做事的方法。]
-
继续采用这种方法,欢迎来到 JAVA 世界。:)
标签: java xml-parsing hashmap domparser xml-attribute