Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

reading values from XML document

Posted on 2001-06-15
7
Medium Priority
?
250 Views
Last Modified: 2010-03-31
Hi there,
I am new to XML and my java program needs to read the values
from an XML document.
I need to
read specific values and store those values in variables.

Here is the XML Document :

  <?xml version="1.0" encoding="utf-8" ?>
- <smsmessages>
- <header>
  <nbrmsg>2</nbrmsg>
  <error />
- <content>
- <SMS>
  <SERVICE>KULA</SERVICE>
  <GSM>9874983274</GSM>
  <MSG>khjkkj</MSG>
  </SMS>
- <SMS>
  <SERVICE>KULA</SERVICE>
  <GSM>9874983274</GSM>
  <MSG>khjkkj</MSG>
  </SMS>
  </content>
  </header>
  </smsmessages>


Here is the code so far.. I have already got the whole XML document in the variable "xmlDATA" :

      String xmlDATA;
      int nrMSG = 0;
      sms _sms = new sms();
      xmlDATA = _sms.readXMLDocument(URL);

       // First I need to read this value  "<nbrmsg>2</nbrmsg>" to see how many times I have to loop in the for loop.
     
      for (int i=0; i < nrMSG; i++)
       {
        String gsmnumber;
        String msg;
         // here I need get each sms and put it into a variable
       }
0
Comment
Question by:yngvi
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
7 Comments
 
LVL 5

Expert Comment

by:Calron
ID: 6194792
Sun has some ready made classes that can handle XML files. I would suggest that you use one of those. Have a look at
http://java.sun.com/xml/tutorial_intro.html

for an introduction to one of those tools.
0
 
LVL 35

Expert Comment

by:TimYates
ID: 6195472
Or use something like nanoXML http://nanoxml.sourceforge.net

Tim
0
 
LVL 15

Accepted Solution

by:
ozymandias earned 800 total points
ID: 6195788
Here's an example :

import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.apache.xml.serialize.*;
import java.io.*;

public class XmlTest{

     public static void main(String args[]){

          if (args.length < 2){
               System.out.println("Usage : java XmlTest xmlfile tagname");
               System.exit(1);
          }

          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
          try {
               DocumentBuilder builder = factory.newDocumentBuilder();
               Document document = builder.parse(args[0]);
               Element e = document.getDocumentElement();
               NodeList nl = e.getElementsByTagName(args[1]);
               Node n1;
               Node n2;
               for (int i = 0; i < nl.getLength(); i++){
                    n1 = nl.item(i);
                    n2 = n1.getFirstChild();
                    System.out.println(args[1] + " = " + n2.getNodeValue());
               }
          }catch (Exception e) {
               e.printStackTrace();
          }
     }
}
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
LVL 15

Expert Comment

by:ozymandias
ID: 6195807
You need to compile this and create an xml file to pass in as the first agument.
Here's the file I used :


<?xml version="1.0" encoding="utf-8" ?>
<smsmessages>
<header>
<nbrmsg>2</nbrmsg>
<error/>
<content>
<SMS>
<SERVICE>KULA</SERVICE>
<GSM>9874983274</GSM>
<MSG>khjkkj</MSG>
</SMS>
<SMS>
<SERVICE>KULA</SERVICE>
<GSM>9874983274</GSM>
<MSG>khjkkj</MSG>
</SMS>
</content>
</header>
</smsmessages>

Once done you can run it like so :

   java XmlTest xmlfile nbrmsg

Basically it creates an xml document and then gets a list of all the elements with the name "nbrmsg". It then gets the first TextElement child of each of the "nbrmsg" elements and prints out its value.
0
 
LVL 15

Expert Comment

by:ozymandias
ID: 6195934
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;

public class XEFind{

     public static void main(String args[]){

          if (args.length < 2){
               System.out.println("Usage : java XEFind xmlfile tagname");
               System.exit(1);
          }

          File f = new File(args[0]);
          if (f.exists() && f.canRead()){
               XMLElementFinder xef = new XMLElementFinder(f);
               String s = xef.find(args[1]);
               if (s != null){
                    System.out.println("Element " + args[1] + " found in " + args[0] + ".");
                    System.out.println("Value = " + s);
               }else{
                    System.out.println("No Element " + args[1] + " found in " + args[0] + ".");
               }
          }else{
               System.out.println(args[0] + " either cannot be found or cannot be read.");
          }
     }
}

class XMLElementFinder{

     DocumentBuilderFactory factory;
     DocumentBuilder builder;
     Document document;
     NodeList nl;
     Node n1, n2;

     public XMLElementFinder(File xml){
          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
          try{
               builder = factory.newDocumentBuilder();
               document = builder.parse(xml);
          }catch (Exception e) {
               e.printStackTrace();
          }
     }

     public String find(String tagName){
          nl = document.getElementsByTagName(tagName);
          if (nl.getLength() > 0){
               n1 = nl.item(0);
               n2 = n1.getFirstChild();
               return n2.getNodeValue();
          }else{
               return null;
          }
     }
}
0
 

Expert Comment

by:CleanupPing
ID: 9062041
yngvi:
This old question needs to be finalized -- accept an answer, split points, or get a refund.  For information on your options, please click here-> http:/help/closing.jsp#1 
EXPERTS:
Post your closing recommendations!  No comment means you don't care.
0
 
LVL 14

Expert Comment

by:sudhakar_koundinya
ID: 9253894
No comment has been added lately, so it's time to clean up this TA.
I will leave a recommendation in the Cleanup topic area that this question is:


[points to ozymandias]


Please leave any comments here within the next seven days.
 
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!
 
sudhakar_koundinya
EE Cleanup Volunteer
---------------------
If you feel that your question was not properly addressed, or that none of the comments received were appropriate answers, please post your concern in THIS thread.
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

This was posted to the Netbeans forum a Feb, 2010 and I also sent it to Verisign. Who didn't help much in my struggles to get my application signed. ------------------------- Start The idea here is to target your cell phones with the correct…
Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
Viewers will learn about arithmetic and Boolean expressions in Java and the logical operators used to create Boolean expressions. We will cover the symbols used for arithmetic expressions and define each logical operator and how to use them in Boole…
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
Suggested Courses

609 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