Solved

Exporting Query Results as XML

Posted on 2006-10-19
6
191 Views
Last Modified: 2010-03-31
Hi experts,

Maybe there is a better way than what i'm doing.  

Im using mySQL and Hibernate...

I want to convert database info to XML, but i think the http://www.hibernate.org/186.html won't give me what i want.


I have a tree of data which I manually inputted in my database.
the roots have REF=0, and each subcategory has the REF of its parent.

id     category_name     REF
---------------------------
1      category1                 0
2      category2                 0
3      category1.1              1
4      category1.2              1
5      category2.1              2
...

I need to format this tree to XML.  So i'm trying to think of a good algorithm.

I figure I'll start by downloading the whole table

Then

public String getTreeInXML(ArrayList categories) {
   
   TreeMap root = new TreeMap();
   Iterator itr = categories.iterator();
   
   while (itr.hasNext()) {
      Category cat = (Category)itr.next();
      if (cat.getRef().intValue() == 0)
         root.put(cat.getRef(), );
      else
         ...        
   }

um, ok, so i will come back to this.  be back to work on it later...
}
0
Comment
Question by:dbrownell83
  • 3
6 Comments
 
LVL 14

Expert Comment

by:hoomanv
ID: 17767960
0
 
LVL 1

Author Comment

by:dbrownell83
ID: 17770967
i need algorithmic help more than simple pojo conversion.

this is the latest code... still thinking about it.  there has GOT to be a better way


      // Daniel Brownell 2006
      public String getTreeInXML(ArrayList categories) {
               
               Hashtable allCategories = new Hashtable();
               Hashtable rootTable = new Hashtable();
               
               while (categories.size() != 0) {
                    
                     Iterator itr = categories.iterator();
                    
                     while (itr.hasNext()) {
                        Subjectcategory cat = (Subjectcategory)itr.next();
                        allCategories.put(cat.getSubjectCategoryId(), cat);
                        
                  // if they are the main categories
                        if (cat.getRefSubjectHeader().intValue() == 0){
                           Hashtable subTable = new Hashtable();
                           subTable.put(cat.getSubjectCategoryId(), cat);
                           rootTable.put(cat.getSubjectCategoryId(), subTable);
                        }
                  
                  // otherwise, they are subcategoriez
                        else {
                               Hashtable parentReference = (Hashtable)rootTable.get(cat.getRefSubjectHeader());
                             //if parentRef is null, we need to put it in the allCategory List
                               if (parentReference != null) {

                                     Hashtable childReference = new Hashtable();
                                     childReference.put(cat.getSubjectCategoryId(), cat);
                                     rootTable.put(cat.getSubjectCategoryId(),childReference);
                                     
                               }
                              
                               else {
                              
                                     parentReference = (Hashtable) allCategories.get(cat.getRefSubjectHeader());
                                     
                                     if (parentReference == null) {
                                           allCategories.put(cat.getSubjectCategoryId(), cat);
                                           //it just hasnt got there yet.
                                           continue;
                                     }
                                     else {
                                           Hashtable childReference = new Hashtable();
                                           childReference.put(cat.getSubjectCategoryId(), cat);
                                           parentReference.put(cat.getSubjectCategoryId(),childReference);
                                     }
                                            
                               }
                                
                        }
                        
                        categories.remove(cat);
                     }
               }
               
  //at this point, the bottom up way of saving the data
  // has been turned upside down, so that a rootTable
  // can call .values(), and have the children,
  // and iterate through those values as long as there are child trees to do so
               
               
               
      }
0
 
LVL 1

Author Comment

by:dbrownell83
ID: 17771280
OK,

so there was a better way
i used recursion and MYSQL select statements.

try {
                
      SubjectcategoryDAO dao = new SubjectcategoryDAO ();
                
      Subjectcategory root = (Subjectcategory)dao.findByProperty("subjectCategoryId", 78).get(0);
      System.out.println(root);
                xml = new StringBuffer();
      xml = dao.getTreeInXML(xml, root);
             System.out.println(xml);
}
    catch (Exception e) {
          e.printStackTrace();
    }




      public StringBuffer getTreeInXML(StringBuffer xml, Subjectcategory cat)
       throws Exception {
            List list = findByProperty("refSubjectHeader", cat.getSubjectCategoryId());
            //
            Iterator itr = list.iterator();
            while (itr.hasNext()) {
                  Subjectcategory child = (Subjectcategory)itr.next();
                  xml = xml.append("<").append(child.getSubjectCategoryName()).append(">");
                  xml = getTreeInXML(xml, child);
                  xml = xml.append("</").append(child.getSubjectCategoryName()).append(">");
            }
            return xml;
          
      }  
      
0
 
LVL 1

Author Comment

by:dbrownell83
ID: 17771285
ok, since i answered my own question,
can someone tell me if the first way could have worked?  
0
 
LVL 1

Accepted Solution

by:
DarthMod earned 0 total points
ID: 17813882
Closed, 500 points refunded.
DarthMod
Community Support Moderator
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
solarwind tftp server 2 45
Cipher Configuration on Apache HTTPD 4 53
eclipse argument 14 53
tomcat administrtor 12 32
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
Viewers will learn about the different types of variables in Java and how to declare them. Decide the type of variable desired: Put the keyword corresponding to the type of variable in front of the variable name: Use the equal sign to assign a v…
This video teaches viewers about errors in exception handling.

867 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

16 Experts available now in Live!

Get 1:1 Help Now