0
getAttribute(「...」)在第一個循環中正常工作,但在第二個中(對於'效果'標記)它返回null。 「的ATT的長度:」 始終爲0。我只是不明白爲什麼它失敗:( 'effectElement.getTagName()' 返回 '效果',因爲它應該XPath屬性解析
XML:
<card id="1" card_type="door" name="cleric_1">
<img>c_cleric_1</img>
<slot>6</slot>
<size>small</size>
<value>0</value>
<curse>false</curse>
<effects>
<effect type="ClassChangeEffect" args="Cleric"></effect>
</effects>
</card>
JAVA :
........ >
NodeList nodeList = (NodeList) xpath.evaluate("/list/card", doc, XPathConstants.NODESET);
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element elem = (Element) node;
String type = elem.getAttribute("card_type");
String name = elem.getAttribute("name");
String imgPath = elem.getElementsByTagName("img").item(0).getTextContent();
BodySlot bodySlot = BodySlot.getSlotByIndex(Integer.parseInt(elem.getElementsByTagName("slot").item(0).getTextContent()));
ItemSize itemSize = elem.getElementsByTagName("size").item(0).getTextContent().equals("big") ? ItemSize.BIG : ItemSize.SMALL;
int value = Integer.parseInt(elem.getElementsByTagName("value").item(0).getTextContent());
boolean isCurse = Boolean.getBoolean(elem.getElementsByTagName("curse").item(0).getTextContent());
List<Effect> effectsList = new ArrayList<Effect>();
NodeList effectsNodeList = elem.getElementsByTagName("effects");
for (int j = 0; j < effectsNodeList.getLength(); j++) {
Node effectNode = effectsNodeList.item(j);
if (effectNode.getNodeType() == Node.ELEMENT_NODE) {
Element effectElement = (Element) effectNode;
System.out.println("Length of atts: " + effectElement.getAttributes().getLength());
String effectName = effectElement.getAttribute("type");
String[] args = effectElement.getAttribute("args").split(",");
effectsList.add(effectCreator(effectName, args));
}
}
< ........
}
}
是的,你是對的。我錯過了:(但現在它應該如此,謝謝:) –