我目前正在开发一个项目,我从XML文件中获取一组数据。 XML文件有多个节点,用于存储不同的数据类型(字符串,整数和布尔值)。 Java将这些作为字符串返回,这很好,因为您可以将它们转换为程序中的正确数据类型。当返回节点时,我想将它们放入一个正确类型的数组中,并将每个数组存储在一个主数组中,以便以后在我的程序中使用。在我的XML文件中,我希望有一个节点,其中可以有多个具有相同标签的子节点,这就是我使用多维数组的原因。
我尝试使用Object[][]
和Variable[][]
没有成功,除非我遗漏了一些简单的事情(可能是这种情况)。
XML示例:
<parent>
<child1>string</child1>
<child2>int</child2>
<child2>int</child2>
<child3>boolean</child3>
</parent>
Java示例:
NodeList nList = doc.getElementsByTagName("parent");
NodeList nlAttributes = nList.item(cardId).getChildNodes();
List<String> lElements = new ArrayList<String>();
List<String> lRepeateElement = new ArrayList<String>();
for(int i = 0; i <nlAttributes.getLength(); i++){
if(nlAttributes.item(i).getNodeType()!=3&&nlAttributes.item(i).getNodeType()!=8){
if(nlAttributes.item(i).getNodeName().equals("effect")){
lRepeateElement.add(nlAttributes.item(i).getTextContent());
}else{
lElements.add(nlAttributes.item(i).getTextContent());
}
}
}
aRepeatElements = new String[lRepeateElement.size()];
for(int i = 0; i<lRepeateElement.size(); i++){
aRepeatElements[i]=lRepeateElement.get(i);
}
sElements = new String[lElements.size()];
oElements = new Variable[lElements.size()+1][]; //oElements = new Object[lElements.size()+1][];
for(int i = 0; i<lElements.size(); i++){
if(i==4){
oElements[i]=aRepeatElements;//incompatible types: String[] cannot be converted to Variable/Object[] -> this still exists after attempting to casts
}else{
sElements[i]=lElements.get(0);
String[] temp = new String[1];
temp[0]=sElements[i];//incompatible types: String[] cannot be converted to Variable/Object[] -> this still exists after attempting to casts
oElements[i]=temp;
lElements.remove(0);
}
}
答案 0 :(得分:0)
Object[][]
将解决问题,因为Java中的所有内容都是Object
。除了原语之外的所有东西,就是这样!
要解决这个问题,您需要做的就是包装基元:
int
- &gt; Integer
boolean
- &gt; Boolean