How to validate XML at runtime and show the exact cause of validation failure .

Hi
How can I validate my generated XML at runtine against its schema ? I have used
the validate() method and it does validate correctly against the schema but the
problem is it just returns a boolean . I need to know the exact cause of failure
(like for example The element X was supposed to contain Y,Z etc ). I need to capture
the exact exception (like a Sax Parse exception details).
How do i do that using XMLBeans ??
- Bana

Hi Bana,
You could use the XmlOptions.setErrorListener(Collection) method to get the detailed error message by invoking validate(option).
Kind Regards,
Jennifer

Similar Messages

  • Help: How to Validate XML using SAXParser and return the entire error list

    Hi,
    I have a problem, I'm trying to validate a xml document against the DTD. Here Im using SAXParser and having the ErrorHandler object passed when setting the error Handler, like parser.setErrorHandler(errorHandlerObj).
    I need an output like where the entire XML document is read and all the errors have to be reported with the line number.
    like example:
    <b>Line 6: <promp>
    [Error]:Element type "promp" must be declared.
    Line 8: </prompt>
    [Fatal Error]:The end-tag for element type "promp" must end with a '>' delimiter.
    who can i achieve this.</b>
    what happens with the present code is that it throws the first error it encountered and comes out.
    how can i solve this problem

    You can try to set the following feature to 'true' for your SAXParser:
    http://apache.org/xml/features/continue-after-fatal-error
    At least Xerces supports this feature.

  • How to validate XML against XSD and parse/save in one step using SAXParser?

    How to validate XML against XSD and parse/save in one step using SAXParser?
    I currently have an XML file and XSD. The XML file specifies the location of the XSD. In Java code I create a SAXParser with parameters indicating that it needs to validate the XML. However, SAXParser.parse does not validate the XML, but it does call my handler functions which save the elements/attributes in memory as it is read. On the other hand, XMLReader.parse does validate the XML against the XSD, but does not save the document in memory.
    My code can call XMLReader.parse to validate the XML followed by SAXParser.parse to save the XML document in memory. But this sound inefficient. Besides, while a valid document is being parsed by XMLReader, it can be changed to be invalid and saved, and XMLReader.parse would be looking at the original file and would think that the file is OK, and then SAXParser.parse would parse the document without errors.
    <Book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="book.xsd" name="MyBook">
      <Chapter name="First Chapter"/>
      <Chapter name="Second Chapter">
        <Section number="1"/>
        <Section number="2"/>
      </Chapter>
    </Book>
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Book">
    <xs:complexType>
      <xs:sequence>
       <xs:element name="Chapter" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
         <xs:sequence>
          <xs:element name="Section" minOccurs="0" maxOccurs="unbounded">
           <xs:complexType>
            <xs:attribute name="xnumber"/>
          </xs:complexType>
          </xs:element>
         </xs:sequence>
         <xs:attribute name="name"/>
        </xs:complexType>
       </xs:element>
      </xs:sequence>
      <xs:attribute name="name"/>
    </xs:complexType>
    </xs:element>
    </xs:schema>
    public class SAXXMLParserTest
       public static void main(String[] args)
          try
             SAXParserFactory factory = SAXParserFactory.newInstance();
             factory.setNamespaceAware(true);
             factory.setValidating(true);
             SAXParser parser = factory.newSAXParser();
             parser.setProperty("http://java.sun.com/xml/jaxp/properties/schemaLanguage",
                                "http://www.w3.org/2001/XMLSchema");
             BookHandler handler = new BookHandler();
             XMLReader reader = parser.getXMLReader();
             reader.setErrorHandler(handler);
             parser.parse("xmltest.dat", handler); // does not throw validation error
             Book book = handler.getBook();
             System.out.println(book);
             reader.parse("xmltest.dat"); // throws validation error because of 'xnumber' in the XSD
    public class Book extends Element
       private String name;
       private List<Chapter> chapters = new ArrayList<Chapter>();
       public Book(String name)
          this.name = name;
       public void addChapter(Chapter chapter)
          chapters.add(chapter);
       public String toString()
          StringBuilder builder = new StringBuilder();
          builder.append("<Book name=\"").append(name).append("\">\n");
          for (Chapter chapter: chapters)
             builder.append(chapter.toString());
          builder.append("</Book>\n");
          return builder.toString();
       public static class BookHandler extends DefaultHandler
          private Stack<Element> root = null;
          private Book book = null;
          public void startDocument()
             root = new Stack<Element>();
          public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
             if (qName.equals("Book"))
                String name = attributes.getValue("name");
                root.push(new Book(name));
             else if (qName.equals("Chapter"))
                String name = attributes.getValue("name");
                Chapter child = new Chapter(name);
                ((Book)root.peek()).addChapter(child);
                root.push(child);
             else if (qName.equals("Section"))
                Integer number = Integer.parseInt(attributes.getValue("number"));
                Section child = new Section(number);
                ((Chapter)root.peek()).addSection(child);
                root.push(child);
          public void endElement(String uri, String localName, String qName) throws SAXException
             Element finished = root.pop();
             if (root.size() == 0)
                book = (Book) finished;
          public Book getBook()
             return book;
          public void error(SAXParseException e)
             System.out.println(e.getMessage());
          public void fatalError(SAXParseException e)
             error(e);
          public void warning(SAXParseException e)
             error(e);
    public class Chapter extends Element
       public static class Section extends Element
          private Integer number;
          public Section(Integer number)
             this.number = number;
          public String toString()
             StringBuilder builder = new StringBuilder();
             builder.append("<Section number=\"").append(number).append("\"/>\n");
             return builder.toString();
       private String name;
       private List<Section> sections = null;
       public Chapter(String name)
          this.name = name;
       public void addSection(Section section)
          if (sections == null)
             sections = new ArrayList<Section>();
          sections.add(section);
       public String toString()
          StringBuilder builder = new StringBuilder();
          builder.append("<Chapter name=\"").append(name).append("\">\n");
          if (sections != null)
             for (Section section: sections)
                builder.append(section.toString());
          builder.append("</Chapter>\n");
          return builder.toString();
    }Edited by: sn72 on Oct 28, 2008 1:16 PM

    Have you looked at the XML DB FAQ thread (second post) in this forum? It has some examples for validating XML against schemas.

  • How to change Topic's Icon and show the Print Button

    Hi, currently i'm using robohelp html version 8. I have spent quite some time to figure out how to change topic's Icon and show the Print Button in my project. Anyone can help me on this? Btw, i using MX(template) to generate the output with FlashHelp Pro.
    Below is the screenshot for clearer clarification:
    Thanks.

    We would have told you if there was.
    Sorry but a downside of FlashHelp is that your customising options are limited.
    See www.grainge.org for RoboHelp and Authoring tips
    Follow me @petergrainge

  • How to capture PLSQL package error and show the same in OAF Page.?

    Hi all,
    I am having the requirement to capture the error from a PL/SQL package and show the error in OAF page with meaning full error.
    Assume i am having the create and review page.
    The create page having the employeeLOV input field (non mandatory field).
    (i have the package which will check whether this LOV value is filled or not.. if not given then the user should be able to see a "understandable message.)
    to achieve the above scenario am following the below steps
    In my CO,
    with in try catch i called the am method which will invoke the XX_CUSTOM_PKG.
    so, from the catch it is giving me the message as shown below.
    try
    ((OAApplicationModule)localObject1).invokeMethod("insertData", personParam);--which will call the am method which in turn call the package.
    catch(Exception exception)
    throw new OAException("Review Error: "+ exception);
    Assume there are 2 possiblity of error inside this package one for Date field and another one for Employee field. we don't know which validation the user will encounter.
    For Employee field validation it is giving messag as below
    Review Error: oracle.apps.fnd.framework.OAException: Exception in insertData:java.sql.SQLException: ORA-20500: Employee field is required. ORA-06512: at "APPS.CUSTOM_UTIL_PKG", line 702 ORA-06512: at line 1
    for Date field as below.
    Review Error: oracle.apps.fnd.framework.OAException: Exception in insertData:java.sql.SQLException: ORA-20500: Date field should always greater than sysdate. ORA-06512: at "APPS.CUSTOM_UTIL_PKG", line 702 ORA-06512: at line 1
    But i need to display only the message "Employee field is required" or "Date field should always greater than sysdate" in the screen.. as information.
    Could you please help me to achive the above message? any sample code will be great help for me.
    Thanks,
    Thiru.
    Edited by: thiru_apps on Mar 13, 2012 11:13 AM

    try
    ((OAApplicationModule)localObject1).invokeMethod("insertData", personParam);--which will call the am method which in turn call the package.
    catch(Exception exception)
    //throw new OAException("Review Error: "+ exception);
    /*Try this code*/
    String exception = null;
    exception = exception.toString();
    if(exception.contains("Employee")){
    throw new OAException("Employee field is required");
    else if(exception.contains("Date")){
    throw new OAException("Date field should always greater than sysdate");
    else
    throw new OAException(exception.toString());
    I hope this might help
    Niranjana

  • How can I open a vi and show the block diagram?

    Hi,
    I am opening an vi using "Open VI Reference" and "Invoke Methodpen FP", but I want to open the vi and show the block diagram, but I haven´t found any method (Invoke Method) to do that and any property.
    Any idea?
    Thanks!
    Gracinda

    OK, I can come up with a reason.  I have written a program that will search the entire VI Hierarchy of a program and update all of the descriptions for all VIs with the top level program part #, the name of the top level program that the VI is used in, the company copyright info, the ITAR notice, company address, the name of the engineer performing the update, along with the date and time.  This will also place as a background image on all the VIs, a watermark of the company name, legality stuff and the copyright. It works very slick in that if there are thousands of sub-vis, such as what I'm working on now, it goes through all of them, makes sure the data is there as per company policy without having to open every one of them look at them and update or not whichever the case may be. The one portion that is tough is that the program will detect if there is a description written about what funtion the VI performs and if there is not a description, then it pops up a dialog requesting the user to write a description. The problem is that without looking at the block diagram for the VI, it can be nearly impossible to write a description for the functionality of the VI. So is there a way to programmatically open a VI, show its block diagram (this would only be in the case of a missing description) and then upon completion of the updates, close the block diagram? (I already open and close the VI programmatically in order to read the VI DESC and update as needed, but that is in the background and of course you can't see the block diagram).
    Thanks,
    Dan

  • How to Parse XML with SAX and Retrieving the Information?

    Hiya!
    I have written this code in one of my classes:
    /**Parse XML File**/
              SAXParserFactory factory = SAXParserFactory.newInstance();
              GameContentHandler gameCH = new GameContentHandler();
              try
                   SAXParser saxParser = factory.newSAXParser();
                   saxParser.parse(recentFiles[0], gameCH);
              catch(javax.xml.parsers.ParserConfigurationException e)
                   e.printStackTrace();
              catch(java.io.IOException e)
                   e.printStackTrace();
              catch(org.xml.sax.SAXException e)
                   e.printStackTrace();
              /**Parse XML File**/
              games = gameCH.getGames();And here is the content handler:
    import java.util.ArrayList;
    import org.xml.sax.*;
    import org.xml.sax.helpers.DefaultHandler;
    class GameContentHandler extends DefaultHandler
         private ArrayList<Game> games = new ArrayList<Game>();
         public void startDocument()
              System.out.println("Start document.");
         public void endDocument()
              System.out.println("End document.");
         public void startElement(String namespaceURI, String localName, String qualifiedName, Attributes atts) throws SAXException
         public void endElement(String namespaceURI, String localName, String qualifiedName) throws SAXException
         public void characters(char[] ch, int start, int length) throws SAXException
              /**for (int i = start; i < start+length; i++)
                   System.out.print(ch);
         public ArrayList<Game> getGames()
              return games;
    }And here is the xml i am trying to parse:<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
    <Database>
         <Name></Name>
         <Description></Description>
         <CurrentGameID></CurrentGameID>
         <Game>
              <gameID></gameID>
              <name></name>
              <publisher></publisher>
              <platform></platform>
              <type></type>
              <subtype></subtype>
              <genre></genre>
              <serial></serial>
              <prodReg></prodReg>
              <expantionFor></expantionFor>
              <relYear></relYear>
              <expantion></expantion>
              <picPath></picPath>
              <notes></notes>
              <discType></discType>
              <owner></owner>
              <location></location>
              <borrower></borrower>
              <numDiscs></numDiscs>
              <discSize></discSize>
              <locFrom></locFrom>
              <locTo></locTo>
              <onLoan></onLoan>
              <borrowed></borrowed>
              <manual></manual>
              <update></update>
              <mods></mods>
              <guide></guide>
              <walkthrough></walkthrough>
              <cheats></cheats>
              <savegame></savegame>
              <completed></completed>
         </Game>
    </Database>I have been trying for ages and just can't get the content handler class to extract a gameID and instantiate a Game to add to my ArrayList! How do I extract the information from my file?
    I have tried so many things in the startElement() method that I can't actually remember what I've tried and what I haven't! If you need to know, the Game class instantiates with asnew Game(int gameID)and the rest of the variables are public.
    Please help someone...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    OK, how's this?
    public void startElement(String namespaceURI, String localName, String qualifiedName, Attributes atts) throws SAXException
              current = "";
         public void endElement(String namespaceURI, String localName, String qualifiedName) throws SAXException
              try
                   if(qualifiedName.equals("Game") || qualifiedName.equals("Database"))
                        {return;}
                   else if(qualifiedName.equals("gameID"))
                        {games.add(new Game(Integer.parseInt(current)));}
                   else if(qualifiedName.equals("name"))
                        {games.get(games.size()-1).name = current;}
                   else if(qualifiedName.equals("publisher"))
                        {games.get(games.size()-1).publisher = current;}
                   etc...
                   else
                        {System.out.println("ERROR - Qualified Name found in xml that does not exist as databse field: " + qualifiedName);}
              catch (Exception e) {} //Ignore
         public void characters(char[] ch, int start, int length) throws SAXException
              current += new String(ch, start, length);
         }

  • How to validate XML using java_xml_pack-summer-02?

    In jaxp1.1, we validate the xml file in this way:
    c:\java -jar Validator.jar myBookStore.xml
    However, in java_xml_pack-summer-02, which is latest version of jaxp, the Validator.jar is not available. So, how to validate xml file?
    Pls help.

    develop your own validator... here is a quick and dirty one, which spits exceptions when error are met:
    import java.io.*;
    import javax.xml.parsers.*;
    import org.xml.sax.*;
    import org.xml.sax.helpers.DefaultHandler;
    public class Validator
      public static void main(String[] args) throws Exception {
        SAXParserFactory spf = SAXParserFactory.newInstance();
        spf.setValidating(true);
        spf.setNamespaceAware(true);
        SAXParser sp = spf.newSAXParser();
        sp.parse(new File(args[0]), new DefaultHandler());
    }

  • How to validate xml using xsd

    Hi All
    please tell me how to validate xml using xsd
    regards

    Try using this link:
    = http://www.google.nl/search?q=XML+validate+oracle for instance or
    = use the search button on this forum and / or
    = read the FAQ on this (XML DB FAQ
    Thanks Eddie et all, for educating me via http://awads.net/wp/2006/11/14/barts-punishment-for-asking-dumb-questions (don't mind the URL , the info there is really useful)
    The following link on this site is just brilliant: http://www.albinoblacksheep.com/flash/posting.php
    Grz
    Marco
    Message was edited by:
    mgralike

  • How to run the report and show the output in excel file

    salam
    how to run the report and show the output in excel file,
    how to run the report and print the o/p via printer
    how to run the report and send the o/p via mail
    thank u all

    Hi,
    There are Parameters DESTTYPE, DESFORMAT and DESNAME. You can set these parameters to get as you want.
    1) Output in Excel File
         ADD_PARAMETER(PL_ID, 'DESTYPE', TEXT_PARAMETER, 'FILE');
         ADD_PARAMETER(PL_ID, 'DESFORMAT', TEXT_PARAMETER, 'DELIMITED');
         ADD_PARAMETER(PL_ID, 'DESNAME', TEXT_PARAMETER, '<file_name>.XLS');2) output to printer
         ADD_PARAMETER(PL_ID, 'DESTYPE', TEXT_PARAMETER, 'PRINTER');
         ADD_PARAMETER(PL_ID, 'DESNAME', TEXT_PARAMETER, '<printer_name>');3) Email - Have to configure SMTP and all. ( i didn't checked it)
         ADD_PARAMETER(PL_ID, 'DESTYPE', TEXT_PARAMETER, 'MAIL');
         ADD_PARAMETER(PL_ID, 'DESNAME', TEXT_PARAMETER, '<email_id>');Regards,
    Manu.
    If this answer is helpful or correct, please mark it. Thanks.

  • After turning on iMAC the sign in page comes up and accept my password. It then goes to a page with a background pictures but nothing else. If I leave it there it eventually fades and shows the clock.  How to I get it to open from there?

    After turning on iMAC the sign in page comes up and accept my password. It then goes to a page with a background pictures but nothing else. If I leave it there it eventually fades and shows the clock.  How to I get it to open from there?

    Hello,
    See if it'll Safe Boot from the HD, (holding Shift key down at bootup).

  • How to upload Images to azure media services and show the image on on click on Link?

    Hi,
    I want to upload the image to the Azure media service asset and show the Link on the page. When use clicks on the Link I want to show it user. How can I implement this with C#? Now I am uploading the image to asset as in the normal way and getting the URL
    for that. But I am not able to show it user when he click on the image link.
    Thanks,
    Pavankuamr H K

    HI
    Azure media services has a RESTful service and a C# SDK that you can use to interact with the Azure Media Services.
    Here is the documentation and sample code for calling the Media services and using the SDK:
    https://msdn.microsoft.com/en-us/library/dn735908.aspx?f=255&MSPPError=-2147217396
    Aram Koukia | Blog: koukia.ca | Twitter:
    @aramkoukia

  • How to validate xml file with XSD schema ??  in JDK1.4.2

    How to validate xml file with XSD schema ?? in JDK1.4.2
    i dont want to use new Xerec Jar ...
    Suggest option ...

    Please do not double-post. http://forum.java.sun.com/thread.jspa?threadID=5134447&tstart=0
    Then use Stax (Woodstock) or Saxon.
    - Saish

  • CS 4 InDesign 6.0.4 How do I get rid of it showing the X and Y's

    How do I get rid of it showing the X and Y positions when I move a box or something around? Thank you.

    Thank you, I don't know how some of these things are coming up and happening since I upgraded to OS 10.6

  • How to programmatically load and show the front panel of a vi but NOT run it?

    Is there a way to load and show the front panel of a vi but NOT run it?  I am starting with the AsynchronousCallAndForget.vi from the example finder and inserted an invoke node with the FP Open method call prior to the Start Asynchronous Call node. The vi I am loading has the "Run when opened" unchecked and the menu bar IS visible so I can manually click the run arrow. Thanks!
    Solved!
    Go to Solution.

    Why are you using the Async call? If you simply open the VI reference, then call the FP.Open method this works fine. You can then call the VI run method with Wait Until Done set to false if you wish to run it Asynchronously, this is how we did it in ye olde days before we had this new fangled "Start Asynchronous Call" stuff. 
    Charles Chickering
    Architecture is art with rules.
    ...and the rules are more like guidelines

Maybe you are looking for

  • Is there a way to activate audio crossfade

    I want to add audio crossfade on my ipod touch, is there any new software that can do that?

  • Howto use formula columns in matrix reports

    Hello How can i use a formula column in matrix report whose function would be Formula_Column_Result=A-B where A=Cell A B =Cell B Regards Fahad

  • Have FTP running-Now I want to switch to SFTP. How?

    My MacMini at work is open over FTP, so I can access files remotely. Trouble is, I want to secure the data transfers, so FTP won't cut it. So, I just need to confirm with the knowledgeable: to switch to SFTP, do I just close off Port 21 on my office

  • Check box near name column

    How do I add or delete check in box to left of song name column. My library list is full of those checks and I don't know how they got there.

  • GUI swing class help needed

    hi, i just need some help to create a bar kind of object (like a bar of battery shown in mobile phones). the information i have is in percentage from 0-100%. and what i have planned is that: the bar will be split into four: from 0-25: one bar will be