Sessional
New Member
- Reaction score
- 5
Okay, I have to XML files, I need your opinions on which one would be easier and better to parse.
For the second one my parser looks like crap. I've done so many things that I don't remember what I've done and what for, so if someone could point me in the right direction.. All I remember about this is that it doesn't parse the NPCIdle chat correctly.
Code:
<?xml version="1.0" encoding="UTF-8"?>
<Quest>
<QuestName>Quest Number1</QuestName>
<QuestStages>1</QuestStages>
<Id>0</Id>
<InQuest>278</InQuest>
<QuestStage>
<Chat>
<NpcChats>1</NpcChats>
<chat1>Oh dear, oh dear, oh dear, help me.</chat1>
</Chat>
<IdleChat>
<NpcChats>1</NpcChats>
<chat1>Oh dear, oh dear, oh dear, I'm in a terrible terrible mess.</chat1>
</IdleChat>
<RequiredItems>
<item>221</item>
</RequiredItems>
</QuestStage>
</Quest>
Code:
<Quest>
<QuestName>Cooks Assistant</QuestName>
<QuestStages>1</QuestStages>
<Id>0</Id>
<InQuest>278</InQuest>
<NpcChat>
<QuestStages>1</QuestStages>
<QuestStage>
<npc>278</npc>
<chats>3</chats>
<chat1>Oh dear, oh dear, oh dear, I'm in a terrible terrible</chat1>
<chat2>mess! It's the Duke's birthday today, and I should be</chat2>
<chat3>making him a lovely big birthday cake.</chat3>
</QuestStage>
</NpcChat>
<NpcIdleChat>
<QuestStage>
<npc>278</npc>
<chats>1</chats>
<chat1>How are you doing gathering the ingredients?</npcidlechat>
</QuestStage>
</NpcIdleChat>
<RequiredItems>
<QuestStage>
<item>221</item>
<item>222</item>
<item>223</item>
</QuestStage>
</RequiredItems>
</Quest>
For the second one my parser looks like crap. I've done so many things that I don't remember what I've done and what for, so if someone could point me in the right direction.. All I remember about this is that it doesn't parse the NPCIdle chat correctly.
Code:
public static void parseQuestDocument() {
Element elements = questCore.getDocumentElement();
NodeList questNames = elements.getElementsByTagName("Quest");
Element questName = (Element) questNames.item(0);
if (questNames != null && questNames.getLength() > 0) {
String name = getName(questName);
String stages = getQuestStages(questName);
String id = getQuestId(questName);
Id = Integer.parseInt(getQuestId(questName));
createQuest(name, stages, id);
QuestLoader.getQuest(Id).setQuestStages(Integer.parseInt(stages));
String npc = getNpcInQuest(questName);
String[] npcArray = npc.split(" ");
addNPCInQuest(npcArray);
}
/**
* For each quest stage
* create QuestStage text
* Creates a nodelist of everything inside the stageText
* Get the NPC Id
* Get the amount of chats.
*/
/**
* Creates a node list for all the XML Tags inside the NpcChat tag.
*/
NodeList npcChats = questCore.getElementsByTagName("NpcChat");
if (npcChats != null && npcChats.getLength() > 0) {
//NodeList npcChats2 = elements.getChildNodes();
for (int i=0; i<npcChats.getLength(); i++) {
// Get element
Element element = (Element)npcChats.item(i);
System.out.println(element.getNodeName());
}
String questStageChats = getQuestStages((Element) npcChats.item(0));
for (int y = 0; y < Integer.parseInt(questStageChats); y++) {
System.out.println("NpcChats: " + npcChats.item(y));
String chatAmts = getQuestChatAmount((Element) npcChats.item(0));
/**
* Creates a node list for all the XML Tags inside the QuestStage tag.
*/
NodeList stageChatAmt = elements.getElementsByTagName("QuestStage");
/**
* Gets the element # requested out of the NpcChat NodeList.
*/
for (int x = 0; x < chatAmts.length(); x++) {
Element npcChat = (Element) stageChatAmt.item(x);
try {
if (chats.size() != 0) {
chats.clear();
}
for (int i = 0; i < Integer.parseInt(getQuestChatAmount(npcChat)); i++) {
String chatText = "chat" + (i + 1);
String e3 = getTextValue(npcChat, chatText);
chats.add(e3);
}
String e4 = getNpcId(npcChat);
putNpcStage(e4);
System.out.println("Chats: " + chats);
generateNPCChat(stage);
stage++;
} catch (Exception e) {
}
}
}
}
}