Parsing XML with JDK

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.

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) {
                    }
                }
            }
        }

    }
 

duyen

New Member
Reaction score
214
Are you trying to make runescape or something?

If you are, just know it's patented.
 

Sessional

New Member
Reaction score
5
No, not trying to make runescape.

I know it's patented, it's just that, by using runescapes quest as a base, it gave me something good to use to learn how to parse XML and how to display the data as something useable later.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top