Solved

Extract Tags from XML using org.w3c.dom

Posted on 2008-10-14
2
849 Views
Last Modified: 2012-05-05
I have an xml that looks something like the below. I am using Java. I have parsed it. (There can be an infinite number of <Result> tags as well as an infinite number of <Return> tags.)

<TestXML>
    <FirstStuff>blah</FirstStuff>
    <MoreStuff>blah blah</MoreStuff>
    <Result>1234</Result>
    <Result>5678</Result>
    <Return>
         <Comment>This one worked</Comment>
         <Pool>1234</Pool>
    </Return>
    <Return>
         <Comment>This one worked better</Comment>
         <Pool>5678</Pool>
    </Return>
</TestXML>

This is a piece of code that I have used:
     final Document document = xmlObject.getXmlAsDocument();
     final NodeList nodeList = document.getElementsByTagName("Result");
     final Vector results = new Vector();
     for (int i = 0; i < nodeList.getLength(); i++) {
          final Node node = nodeList.item(i);
          final String nodeName = node.getNodeName();
          final Node nodeValue =  node.getChildNodes().item(0);
          results.add(nodeValue.getNodeValue());
     }

This works fine. But now I don't need to get the results tag anymore, but the two tags inside the Return tag. And I need to associate the comment with the pool, so I need to get them together so I can put them in some object before adding them to the Vector. I am very unfamiliar with how this work and am struggling to read the tags inside the Results tag. I tried the getChildren and getSibling thing...but I don't think I am using it in the right way. Can someone help me ??      
0
Comment
Question by:Zenoe
2 Comments
 
LVL 6

Expert Comment

by:manuel_m
ID: 22712121
If you want to read the tags inside of the return tag, you have to add another for loop.

First, get elements by tag name from "Return" tag.
Now you have a node list with all Return nodes.
To get the tags inside you have to get the child nodes (getChildNodes()) from the items in your for loop.
With getChildNodes you get another node list.
Iterate over it to get the Comment and Pool tags. To get the text try getTextContent on the nodes.
0
 
LVL 5

Accepted Solution

by:
muktajindal earned 80 total points
ID: 22718361
You may use the attached code snippet.
		try {

			DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

			DocumentBuilder builder = factory.newDocumentBuilder();

			Document document = builder.parse(new File("C:\\test.xml"));

			NodeList nodeList = document.getElementsByTagName("Return");

			for (int i = 0; i < nodeList.getLength(); i++) {

				Node node1 = nodeList.item(i);

				if (node1.getNodeType() == Node.ELEMENT_NODE) {

					NodeList nodes = node1.getChildNodes();

					for (int j= 0; j < nodes.getLength(); j++) {

						Node node2 = nodes.item(j);

						if (node2.getNodeType() == Node.ELEMENT_NODE) {

							NodeList internalNodes = node2.getChildNodes();

							String nodeName = node2.getNodeName();

							for (int k = 0; k < internalNodes.getLength(); k++) {

								Node node = internalNodes.item(k);

								String nodeValue = node.getNodeValue();

								System.out.println(nodeName + " = " + nodeValue);

							}

						}

					}

				}

			}

		} catch(Exception e) {

			e.printStackTrace();

		}

Open in new window

0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Suggested Solutions

Browsing the questions asked to the Experts of this forum, you will be amazed to see how many times people are headaching about monster regular expressions (regex) to select that specific part of some HTML or XML file they want to extract. The examp…
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now