Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / June 2007

Tip: Looking for answers? Try searching our database.

XML JDOM

Thread view: 
weetat - 27 Jun 2007 11:57 GMT
Hi all,

I have some problem in one of my xml file which value "&" in it.

I am using JDOM API to extract xml data to database below is code:
the error line is in SAXBuilder builder = new SAXBuilder();  code.

Any one have any suggestion or ideas how to solve it ?

Thanks

 protected int process(HttpServletRequest request,
HttpServletResponse response) {
       int dispatchState = 0;
       try {
           // Build the document with SAX and Xerces, no validation
           SAXBuilder builder = new SAXBuilder();
           File file = new File(xmlDir);
           File [] files = file.listFiles();

           // list of files in directory
           Map <String,ModelBean>model_map = new
HashMap<String,ModelBean>();
           Map <String,String>orig_series_map = new
HashMap<String,String>();
           Map <String,String>orig_category_map = new
HashMap<String,String>();

           XmlAction xmlAction = ActionManager.getXmlAction();

           for(int i=0;i<files.length;i++){

               String filename = files[i].getAbsolutePath();
               logger.log(this.getClass().getName(), "XmlServlet
process() filename" ,filename);

               // Create the document
               Document doc = builder.build(new File(filename));
               Element root_element = doc.getRootElement();
               // Get a List of all direct children as Element
objects

               // content data

               List allroot_attributes =
root_element.getAttributes();
               Attribute attribute = root_element.getAttribute("id");
               String content_id = attribute.getValue();
               attribute = root_element.getAttribute("revision");
               int revision = attribute.getIntValue();
               attribute = root_element.getAttribute("lang");
               String lang = attribute.getValue();
               attribute = root_element.getAttribute("type");
               String type = attribute.getValue();
               attribute = root_element.getAttribute("ts-type");
               String ts_type = attribute.getValue();
               String xmlfile = files[i].getName();
               logger.log(this.getClass().getName(), "XmlServlet
process() ts_type" ,ts_type);
               logger.log(this.getClass().getName(), "XmlServlet
process() xmlfile" ,xmlfile);
               String title = "";

               if(ts_type.equalsIgnoreCase("Type-A"))
                title = root_element.getChild("main-
text").getChild("content-title").getText();
               if(ts_type.equalsIgnoreCase("Type-B"))
                title = root_element.getChild("main-
text").getChild("content-title").getText();
               if(ts_type.equalsIgnoreCase("Type-C"))
                title = root_element.getChild("main-
text").getChild("content-title").getText();
               if(ts_type.equalsIgnoreCase("Type-D"))
                title = root_element.getChild("download-
page").getChild("content-title").getText();

               logger.log(this.getClass().getName(), "XmlServlet
process() title" ,title);

               boolean in_queue =
xmlAction.getContentInQueue(content_id,revision,lang);
               logger.log(this.getClass().getName(), "XmlServlet
process() in_queue" ,String.valueOf(in_queue));

               if(!in_queue){
                   logger.log(this.getClass().getName(), "XmlServlet
process() content_id" ,content_id);
                   logger.log(this.getClass().getName(), "XmlServlet
process() revision" , String.valueOf(revision));
                   logger.log(this.getClass().getName(), "XmlServlet
process() lang" , lang);
                   // add new content

xmlAction.addNewContent(content_id,revision,lang,ts_type,xmlfile,title);
                   // add new content reference

xmlAction.addNewContentReference(content_id,revision,lang,"");
                   // get all root child elements
                   List allChildren = root_element.getChildren();
                   // list all child elements
                   for (Iterator iter = allChildren.iterator();
iter.hasNext(); ){
                       Element element = (Element)iter.next();

                       // get product-information child elements
                       if(element.getName().equalsIgnoreCase("product-
information")){
                           List allProductInfo_Children =
element.getChildren();
                           for (Iterator product_info_iter =
allProductInfo_Children.iterator(); product_info_iter.hasNext(); ){
                               Element product_info_element =
(Element)product_info_iter.next();

                               // get model-information child
elements

if(product_info_element.getName().equalsIgnoreCase("model-
information")){
                                   List allmodel_info_Children =
product_info_element.getChildren();
                                   for (Iterator model_info_iter =
allmodel_info_Children.iterator(); model_info_iter.hasNext(); ){
                                       Element model_info_element =
(Element)model_info_iter.next();
                                       // get category child elements

if(model_info_element.getName().equalsIgnoreCase("category")){
                                           String category_code=
model_info_element.getChild("category-code").getText();
                                           String category_name=
model_info_element.getChild("category-name").getText();

orig_category_map.put(category_code,category_name);
                                           List allcategory_Children
= model_info_element.getChildren();
                                           for (Iterator
category_iter = allcategory_Children.iterator();
category_iter.hasNext(); ){
                                               Element
category_element = (Element)category_iter.next();

if(category_element.getName().equalsIgnoreCase("series")){
                                                   String series_code
= category_element.getChild("series-code").getText();
                                                   String series_name
= category_element.getChild("series-name").getText();

orig_series_map.put(series_code,series_name);
                                                   List model_list =
category_element.getChildren("model");
                                                   for(Iterator
model_iter = model_list.iterator(); model_iter.hasNext(); ){
                                                       Element
model_element = (Element)model_iter.next();
                                                       ModelBean
modelBean = new ModelBean();
                                                       String
model_code = model_element.getChild("model-code").getText();
                                                       String
model_name = model_element.getChild("model-name").getText();

modelBean.setCategory_code(category_code);

modelBean.setCategory_name(category_name);

modelBean.setSeries_code(series_code);

modelBean.setSeries_name(series_name);

modelBean.setModel_name(model_name);

model_map.put(model_code,modelBean);
                                                       // add new
content models

xmlAction.addNewContentModels(content_id,revision,lang,model_code);

                                                   }

                                               }

                                           }

                                       }

                                   }
                               }
                           }
                       }

                   }

                   // move xml files to staging folder
                   files[i].renameTo(new File(stagingDir + "/" +
files[i].getName()));
               }else{
                   // delete xml file if content still in queue
                   files[i].delete();
               }

               if(!in_queue){
                   Set model_set = model_map.entrySet();

                   for (Iterator model_map_iter =
model_set.iterator(); model_map_iter.hasNext(); ) {
                       Map.Entry entry =
(Map.Entry)model_map_iter.next();
                       String model_code = (String)entry.getKey();
                       ModelBean modelBean =
(ModelBean)entry.getValue();
                       String model_name =modelBean.getModel_name();
                       String series_code
=modelBean.getSeries_code();
                       String series_name
=modelBean.getSeries_name();
                       String category_code
=modelBean.getCategory_code();
                       String category_name
=modelBean.getCategory_name();
                       // add new model

xmlAction.addNewModel(model_code,model_name,category_code,series_code);

xmlAction.addNewModelOwner(model_code,category_code,series_code);

                   }

                   Set orig_series_set = orig_series_map.entrySet();
                   for (Iterator orig_series_iter =
orig_series_set.iterator(); orig_series_iter.hasNext(); ) {
                       Map.Entry entry =
(Map.Entry)orig_series_iter.next();
                       String series_code = (String)entry.getKey();
                       String series_name = (String)entry.getValue();
                       // add new orig series
                       if(!
StringCommon.check_string_empty(series_code))

xmlAction.addNewOrigSeries(series_code,series_name);

                   }

                   Set orig_category_set =
orig_category_map.entrySet();
                   for (Iterator orig_category_iter =
orig_category_set.iterator(); orig_category_iter.hasNext(); ) {
                       Map.Entry entry =
(Map.Entry)orig_category_iter.next();
                       String category_code = (String)entry.getKey();
                       String category_name =
(String)entry.getValue();
                       // add new orig category
                       if(!
StringCommon.check_string_empty(category_code))

xmlAction.addNewOrigCategories(category_code,category_name);

                   }
                   logger.log(this.getClass().getName(), "XmlServlet
process()" , "upload xml data to database ok");
               }
           }

       } catch (Exception ex) {
           logger.log(this.getClass().getName(), "XmlServlet
process()" , ex.getMessage(),ex);
       }

       return dispatchState;
   }
bencoe@gmail.com - 27 Jun 2007 18:28 GMT
> Hi all,
>
[quoted text clipped - 267 lines]
>         return dispatchState;
>     }

When I'm working with XML files I make sure I put them through the
same filters I put my HTML through..

replaceAll("&","&amp;");
replaceAll(">","&gt;");
replaceAll("<","&lt;");

it shouldn't be necessary but also,

replaceAll("\"","&quot;");

This does the trick for me when working with web-based data, another
solution is to use a

"CDATA" section to hold your data, instead of the default #text, stuff
inside #text is parsed for entities stuff in CDATA isn't,

Anyways, one of these approaches should work,

---------
Ben.
http://www.plink-search.com


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.