Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Extract Tags from XML using org.w3c.dom

Posted on 2008-10-14
2
Medium Priority
?
861 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 320 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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I was working on a PowerPoint add-in the other day and a client asked me "can you implement a feature which processes a chart when it's pasted into a slide from another deck?". It got me wondering how to hook into built-in ribbon events in Office.
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:
Suggested Courses

886 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