Parsing xml in jsp
Can any one say how to parse the xml file in jsp.
NOTE: To get certain elements or tags value only and not the to parse the whole document.
Is this is possible in DOM.
If so any sample papers are available.
SAX - http://www.saxproject.org/
ram.
Similar Messages
-
hei evryone!!!
I'm a newbie in java, i just wanna know how to parse an xml file in JSP wherein i could remove nodes / modify certain nodes on the xml.
Any suggestions / codes/ ideas would be much appreciatedOn my jsp page the default screen would be the list of traders. The user of the said application has the option to make some changes on the list either, add more trader/s on the list , remove specified trader/s on the list or edit certain trader/s. Furthermore, the user can also cancel the changes he made by clicking the cancel button or commit the modification he made by clicking the save button. When the application altered something, the changes must be reflected on the front end right away, but not on the database yet. In doing so, I intend to have two xml files , (1) the original xml file that is send to a CmsServlet (the servlet code that does the database commit) and (2) the temporary xml file that the page loads, which is initially just a copy of the original xml file. So whenever changes made at the frontend the temporary file is also altered, and when the save button is clicked, the temporary file is copied to original xml file to send the changes on the CmsServlet. But when the application user withdraws the changes he made at the frontend by clicking the cancel button , the original xml file is then copied to temporary xml file to reload the page.
The access/modification on the temporary xml file is done in default.jsp. -
Hi all.
Im having problems on how to parse an xml by JSP
Can anyone teach me how to parse an the XML below by jsp, without using taglibs. Im using JDOM...
<Customer>
<DetailsCustomer ID = 1>
<Name>
John
</Name>
<DetailsCustomer ID = 2>
<Name>
Michael
</Name>
<Customer>Thankz :)
Hope for a kind reply :)Hi,
Why would you like to parse the XML inside a JSP page? JSP are for rendering and not for parsing XML. The code to parse the XML should be put in an ordinary Java class instead.
Parsing XML can be done in a number of ways...it all depends on what you want to do with the XML. Are you looking for XML -> Java Object then maybe you should look at XStream or JAXB.
If you can tell me a little more about your use case maybe I can help you a little bit more.
/klejs -
I need to parse XML DOM in flash......
server side script is sending one var "req" through that XML
DOM
And after parsing that XML DOM i'll get a XML again from
which i need to parse the path to load an imageJSTL has an <x:parse> element, doesn't it? At any rate "I need JSP code" sounds very much like a JSP question to me. There's a JSP forum.
-
Best way to create, modify, XML with JSP ? HELP
Hi friends,
As i am new to XML,
I know there are two APIs used for XML processing, i want to know as a begineer level, which API
is easy and good to implement XML with JSP.
1) SAX
2) DOM
i want to make a log file in XML, so on web page it will be displayed on HTML form through XSL.
Since there is good tutorial on http://www.w3schools.com/dom
but i think its HTML dom
I want XML procession through JAVA CODE , what should i use ? and give some good tutorials on XML DOM
that is used with JAVA / JSP.
HELP.
Edited by: Ghanshyam on Sep 19, 2007 3:24 PMWell what i think is you gonna checkout with your requirements before implementing any of the popular XML parsing mechnisms.
If you are intrested in faster processing @sacrifising a gud amount of your Memory,DOM is the one which you are looking for.
If you are instrested in Managing your memory and but if you are ok with sacrifising speed SAX is the best solution.it works on what is called a push technology.
and if you think either way you might have to look towards a pull parser which is StAX (Streaming API for XML Parsing)
it'd be a gr8 idea if you can go through the below article which explians about each of the parsing mechanisms
http://www.stylusstudio.com/xml/parser.html#*
coming back to helpful resources as far java is concern checkout the below link which might be of some help.
and the main thing is that all of these parser there is a defined specification you might find implementations of different vendors on this.
eg:Sun Provides one with JDK itself,same as IBM provides one,oracle does the same & so on...
your first task would be to focus on one such implementation which can cater your requirements.
DOM:*
Basic Parsing Objects / Interfaces Involved while DOM parsing:
http://www.w3.org/TR/DOM-Level-2-Core/java-binding.html
Breif Overview & few important API details:
http://www.developerlife.com/domintro/default.htm
Simple Example:
http://www.brics.dk/~amoeller/XML/programming/domexample.html
Others:
http://www.roseindia.net/xml/dom/
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JAXPDOM.html#wp79994
http://java.sun.com/webservices/jaxp/dist/1.1/docs/tutorial/dom/1_read.html
SAX:*
http://www.javacommerce.com/displaypage.jsp?name=saxparser1.sql&id=18232
http://java.sun.com/webservices/jaxp/dist/1.1/docs/tutorial/sax/index.htm
http://java.sun.com/developer/Books/xmljava/ch03.pdf
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JAXPSAX.html#wp69937
http://www.onjava.com/pub/a/onjava/excerpt/java_xslt_ch5/index.html?page=6
StAX:*
http://java.sun.com/webservices/docs/1.6/tutorial/doc/SJSXP2.html
http://javaboutique.internet.com/tutorials/stax/
http://today.java.net/pub/a/today/2006/07/20/introduction-to-stax.html
Hope this might be of some help :)
REGARDS,
RaHuL
http://weblogs.java.net/blog/spericas/archive/2006/04/sun_stax_parser.html -
How to Pass values from XML to JSP??? Urgent Please Help me
Hi guys,
I am new to XML, I want to pass values from XML to JSP. I have a xml file with attributes, I should send this values to a JSP file. How is it??? Please Help guys.... its very urgent. Please send me how to do it with an example or atleast any urls related that....
Looking for ur favourable reply.
Thanks in advance,
Sridharin a servlet :
parse your xml file (see how at the end of the post) and
put the values you want in the request attributes
request.setAttribute("value1", value1);
...redirect to the jsp
in the JSP:
get the wanted attributes:
String value1=(String)request.getAttribute("value1");To learn how to parse a xml file, pay a look at this page, it explains how to read the XML document to build an object representation, and then how to navigate through this object to get the data
http://labe.felk.cvut.cz/~xfaigl/mep/xml/java-xml.htm -
Hi I want to create a xml using JSP For eg I want to create a report
and I want to take all the data required for the report from the user
and want to put all the information in a session and whenever a user
wants to see the html output I should be able to parse the xml file
and show it to user.
I know it is doable but I am confused about storing the data in
session and concerting that data into XML file any help would be
great.
Thanks,
Preeti
Sounds like you might want to look at XML data binding. Something like JAXB
or Castor can create an object that can be turned into XML by merely calling
a single method and probably streamed to Xalan or whatever to create HTML.
However, don't quote me on this - I am having enough troubles with trying to
get the compiled Objects to be as I wish. Basically, they both take your
DTD with an extra file that defines the types to be used in the classes -
i.e. instead of string int might be used - and which tags to turn into
classes and general information such as this about the output of your
classes. You then simply call Unmarshal (for both castor and JAXB) and it
loads the file from the selected input stream into the created object, you
edit the object, what ever - store it on the server... and call Marshal to
get back the xml... as this is all using streams it could be passed to Xalan
for processing i think...
Hope I've helped, and answered your question a little!
"Preeti Sikri" <[email protected]> wrote in message
news:[email protected]...
> Hi I want to create a xml using JSP For eg I want to create a report
> and I want to take all the data required for the report from the user
> and want to put all the information in a session and whenever a user
> wants to see the html output I should be able to parse the xml file
> and show it to user.
>
> I know it is doable but I am confused about storing the data in
> session and concerting that data into XML file any help would be
> great.
>
> Thanks,
> Preeti
-
RE: [iPlanet-JATO] Parse error in JSP parser in IAS6
Hi Todd,
removing the defaultValue="" attribute works.
I have not got around to testing the SP3.
BTW. The reason the default value tag was added was to stop Null pointer
exceptions being thrown in the
HrefTag.beginDisplay().
buffer.append("?")
.append(field.getQualifiedName()) // "FooHref"
.append("=")
.append(URLEncoder.encode(value.toString())); // "/foo"
If you don't explicitly add a defaultValue="" to the jsp HREF tag ,
HrefTag.getDefaultValue() returns null.
Our hack was to add the following in HrefTag.java.
if (value==null)
value=getDefaultValue();
//===========================
//IP6 ADDED THE FOLLOWING LINE
value = (value== null? "":value);
//============================
Is that pheasible work-around ? This eliminates the need to add
defaultValue="" to all HREF tags.
Also, I might as well point another behavior that we encountered with HREFS.
In ND, if a HREF's display Field was bound to a column in DataObject and the
particular record had no value, no URL would be rendered on the page.
The HTML would look something like this( from memory ):
<A
HREF="../AppName/PgMsgMain.hrfSubject_onWebEvent(hrfSubject).994226335140? +
ND URL STUFF"></A>
In JATO by default a url get displayed with "null" as the link. ie.
<a href="../AppName/PgMsgMain?PgMsgMain.hrfSubject= + URL STUFF">null</a>
Our hack was modify the HrefTag.doEndTag method to not append "null" to the
buffer.
if (displayed)
buffer.append(getBodyContent().getString().equals("null")? "":
getBodyContent().getString()))
// IP6 HACK buffer.append(getBodyContent().getString())
.append("</a>");
writeOutput(fireEndDisplayEvent(buffer.toString()));
Is there a better way to do this?
thanks
Kostas
-----Original Message-----
From: Todd Fast [mailto:<a href="/group/SunONE-JATO/post?protectID=189233080150012190218067203043176090006144139218183041">toddwork@c...</a>]
Sent: Tuesday, July 03, 2001 12:46 AM
Subject: Re: [iPlanet-JATO] Parse error in JSP parser in IAS6
Hey Kostas--
I personally haven't seen this kind of error. Have you tried simplifying
the expression inside the href tag? For example:
<% Object foo =
viewBean.getRptAssignmentMatch().getvwAssignmentMatchModel().getValue(
vwAssignmentMatchModel.FIELD_ASSIGNMENT_ASSIGNMENT_ID);
%>
<jato:href name="hrefASSIGNMENT_ASSIGNMENT_ID" fireDisplayEvents="true">
<%= foo %>
</jato:href>
Also, is there a different version you could upgrade to? iAS SP3 includes
the Jasper compiler from Tomcat, which should behave quite differently.
Todd
----- Original Message -----
From: "Kostas Morfis" <kmorfis@i...>
Sent: Tuesday, July 03, 2001 12:17 AM
Subject: [iPlanet-JATO] Parse error in JSP parser in IAS6
>
Hi all,
has anyone come across the following error in iPlanet?
[02/Jul/2001 12:21:32:1] error: Exception: SERVLET-compile_failed: Failedin
compiling template: /ras/ras/voyager4/pgAssignmentMatch.jsp, Parse errorin
JSP parser. Missing endtag: /jato:href
Exception Stack Trace:
java.lang.Exception: Parse error in JSP parser. Missing endtag: /jato:href
at com.netscape.jsp.JSP.parseBlock(Unknown Source)
at com.netscape.jsp.JSP.parseUserTag(Unknown Source)
at com.netscape.jsp.JSP.parseTag(Unknown Source)
at com.netscape.jsp.JSP.parseNext(Unknown Source)
etc etc.
We have tested the page in Resin and it works fine.
It seems the JSP parser has a problem with the following type of HREFtags.
>
<jato:href name="hrefASSIGNMENT_ASSIGNMENT_ID" fireDisplayEvents="true"
defaultValue=""><%=
viewBean.getRptAssignmentMatch().getvwAssignmentMatchModel().getValue(com.cb
>
re.ras.voyager4.model.vwAssignmentMatchModel.FIELD_ASSIGNMENT_ASSIGNMENT_ID)
%></jato:href></font></td>
anyone have any suggestions/thoughts/comments ?
Kostas Morfis
Senior Consultant
iRise
www.iRise.com
[Non-text portions of this message have been removed]
[email protected]
[email protected]Hi Todd,
removing the defaultValue="" attribute works.
I have not got around to testing the SP3.
BTW. The reason the default value tag was added was to stop Null pointer
exceptions being thrown in the
HrefTag.beginDisplay().
buffer.append("?")
.append(field.getQualifiedName()) // "FooHref"
.append("=")
.append(URLEncoder.encode(value.toString())); // "/foo"
If you don't explicitly add a defaultValue="" to the jsp HREF tag ,
HrefTag.getDefaultValue() returns null.
Our hack was to add the following in HrefTag.java.
if (value==null)
value=getDefaultValue();
//===========================
//IP6 ADDED THE FOLLOWING LINE
value = (value== null? "":value);
//============================
Is that pheasible work-around ? This eliminates the need to add
defaultValue="" to all HREF tags.
Also, I might as well point another behavior that we encountered with HREFS.
In ND, if a HREF's display Field was bound to a column in DataObject and the
particular record had no value, no URL would be rendered on the page.
The HTML would look something like this( from memory ):
<A
HREF="../AppName/PgMsgMain.hrfSubject_onWebEvent(hrfSubject).994226335140? +
ND URL STUFF"></A>
In JATO by default a url get displayed with "null" as the link. ie.
<a href="../AppName/PgMsgMain?PgMsgMain.hrfSubject= + URL STUFF">null</a>
Our hack was modify the HrefTag.doEndTag method to not append "null" to the
buffer.
if (displayed)
buffer.append(getBodyContent().getString().equals("null")? "":
getBodyContent().getString()))
// IP6 HACK buffer.append(getBodyContent().getString())
.append("</a>");
writeOutput(fireEndDisplayEvent(buffer.toString()));
Is there a better way to do this?
thanks
Kostas
-----Original Message-----
From: Todd Fast [mailto:<a href="/group/SunONE-JATO/post?protectID=189233080150012190218067203043176090006144139218183041">toddwork@c...</a>]
Sent: Tuesday, July 03, 2001 12:46 AM
Subject: Re: [iPlanet-JATO] Parse error in JSP parser in IAS6
Hey Kostas--
I personally haven't seen this kind of error. Have you tried simplifying
the expression inside the href tag? For example:
<% Object foo =
viewBean.getRptAssignmentMatch().getvwAssignmentMatchModel().getValue(
vwAssignmentMatchModel.FIELD_ASSIGNMENT_ASSIGNMENT_ID);
%>
<jato:href name="hrefASSIGNMENT_ASSIGNMENT_ID" fireDisplayEvents="true">
<%= foo %>
</jato:href>
Also, is there a different version you could upgrade to? iAS SP3 includes
the Jasper compiler from Tomcat, which should behave quite differently.
Todd
----- Original Message -----
From: "Kostas Morfis" <kmorfis@i...>
Sent: Tuesday, July 03, 2001 12:17 AM
Subject: [iPlanet-JATO] Parse error in JSP parser in IAS6
>
Hi all,
has anyone come across the following error in iPlanet?
[02/Jul/2001 12:21:32:1] error: Exception: SERVLET-compile_failed: Failedin
compiling template: /ras/ras/voyager4/pgAssignmentMatch.jsp, Parse errorin
JSP parser. Missing endtag: /jato:href
Exception Stack Trace:
java.lang.Exception: Parse error in JSP parser. Missing endtag: /jato:href
at com.netscape.jsp.JSP.parseBlock(Unknown Source)
at com.netscape.jsp.JSP.parseUserTag(Unknown Source)
at com.netscape.jsp.JSP.parseTag(Unknown Source)
at com.netscape.jsp.JSP.parseNext(Unknown Source)
etc etc.
We have tested the page in Resin and it works fine.
It seems the JSP parser has a problem with the following type of HREFtags.
>
<jato:href name="hrefASSIGNMENT_ASSIGNMENT_ID" fireDisplayEvents="true"
defaultValue=""><%=
viewBean.getRptAssignmentMatch().getvwAssignmentMatchModel().getValue(com.cb
>
re.ras.voyager4.model.vwAssignmentMatchModel.FIELD_ASSIGNMENT_ASSIGNMENT_ID)
%></jato:href></font></td>
anyone have any suggestions/thoughts/comments ?
Kostas Morfis
Senior Consultant
iRise
www.iRise.com
[Non-text portions of this message have been removed]
[email protected]
[email protected] -
Script for parsing xml data and inserting in DB
Thank you for reading.
I have the following example XML in an XML file. I need to write a script that can insert this data into an Oracle table. The table does not have primary keys. The data just needs to be inserted.
I do not have xsd file in this scenario. Please suggest how to modify Method 1 https://community.oracle.com/thread/1115266?tstart=0 mentioned so that I can call the XML mentioned below and insert into a table
Method 1
Create or replace procedure parse_xml is
l_bfile BFILE;
l_clob CLOB;
l_parser dbms_xmlparser.Parser;
l_doc dbms_xmldom.DOMDocument;
l_nl dbms_xmldom.DOMNodeList;
l_n dbms_xmldom.DOMNode;
l_file dbms_xmldom.DOMNodeList;
l_filen dbms_xmldom.DOMNode;
lv_value VARCHAR2(1000);
l_ch dbms_xmldom.DOMNode;
l_partname varchar2(100);
l_filename varchar2(1000);
l_temp VARCHAR2(1000);
TYPE tab_type IS TABLE OF tab_software_parts%ROWTYPE;
t_tab tab_type := tab_type();
BEGIN
l_bfile := BFileName('DIR1', 'SoftwareParts.xml');
dbms_lob.createtemporary(l_clob, cache=>FALSE);
dbms_lob.open(l_bfile, dbms_lob.lob_readonly);
dbms_lob.loadFromFile(dest_lob => l_clob, src_lob => l_bfile, amount => dbms_lob.getLength(l_bfile));
dbms_lob.close(l_bfile);
dbms_session.set_nls('NLS_DATE_FORMAT','''DD-MON-YYYY''');
l_parser := dbms_xmlparser.newParser;
dbms_xmlparser.parseClob(l_parser, l_clob);
l_doc := dbms_xmlparser.getDocument(l_parser);
dbms_lob.freetemporary(l_clob);
dbms_xmlparser.freeParser(l_parser);
l_nl := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(l_doc),'/PartDetails/Part');
FOR cur_emp IN 0 .. dbms_xmldom.getLength(l_nl) - 1 LOOP
l_n := dbms_xmldom.item(l_nl, cur_emp);
t_tab.extend;
dbms_xslprocessor.valueOf(l_n,'Name/text()',l_partname);
t_tab(t_tab.last).partname := l_partname;
l_file := dbms_xslprocessor.selectNodes(l_n,'Files/FileName');
FOR cur_ch IN 0 .. dbms_xmldom.getLength(l_file) - 1 LOOP
l_ch := dbms_xmldom.item(l_file, cur_ch);
lv_value := dbms_xmldom.getnodevalue(dbms_xmldom.getfirstchild(l_ch));
if t_tab(t_tab.last).partname is null then t_tab(t_tab.last).partname := l_partname; end if;
t_tab(t_tab.last).filename := lv_value;
t_tab.extend;
END LOOP;
END LOOP;
t_tab.delete(t_tab.last);
FOR cur_emp IN t_tab.first .. t_tab.last LOOP
if t_tab(cur_emp).partname is not null and t_tab(cur_emp).filename is not null then
INSERT INTO tab_software_parts
VALUES
(t_tab(cur_emp).partname, t_tab(cur_emp).filename);
end if;
END LOOP;
COMMIT;
dbms_xmldom.freeDocument(l_doc);
EXCEPTION
WHEN OTHERS THEN
dbms_lob.freetemporary(l_clob);
dbms_xmlparser.freeParser(l_parser);
dbms_xmldom.freeDocument(l_doc);
END;
<TWObject className="TWObject">
<array size="240">
<item>
<variable type="QuestionDetail">
<questionId type="String"><![CDATA[30]]></questionId>
<questionType type="questionType"><![CDATA[COUNTRY]]></questionType>
<country type="String"><![CDATA[GB]]></country>
<questionText type="String"><![CDATA[Please indicate]]></questionText>
<optionType type="String"><![CDATA[RadioButton]]></optionType>
<answerOptions type="String[]">
<item><![CDATA[Yes]]></item>
<item><![CDATA[No]]></item>
</answerOptions>
<ruleId type="String"><![CDATA[CRP_GB001]]></ruleId>
<parentQuestionId type="String"></parentQuestionId>
<parentQuestionResp type="String"></parentQuestionResp>
</variable>
</item>
<item>
<variable type="QuestionDetail">
<questionId type="String"><![CDATA[40]]></questionId>
<questionType type="questionType"><![CDATA[COUNTRY]]></questionType>
<country type="String"><![CDATA[DE]]></country>
<questionText type="String"><![CDATA[Please indicate]]></questionText>
<optionType type="String"><![CDATA[RadioButton]]></optionType>
<answerOptions type="String[]">
<item><![CDATA[Yes]]></item>
<item><![CDATA[No]]></item>
</answerOptions>
<ruleId type="String"><![CDATA[CRP_Q0001]]></ruleId>
<parentQuestionId type="String"></parentQuestionId>
<parentQuestionResp type="String"></parentQuestionResp>
</variable>
</item>
</array>
</TWObject>Reposted as
Script to parse XML data into Oracle DB -
LO Error 26005 Failed to parse XML
Good Afternoon,
I currently have an Xcelsius document that is attached to a Crystal Report that is in Infoview. I have it connected by using Live Office. The Crystal report basically contains a cross tab of data and is run nightly in our system. I bring back the data into Excel in order to build an Xcelsius document off of it. I havent' been using the Live Office piece all that much until recently therefore please excuse my ignorance. I setup my data connection as a Live Office connection. My server connection seems to be correct:
http://WHGCRYSTAL3:8080/dswsbobje/services/session
However, when I try to refresh the document, I get the following error:
soapenv:Server.generalException: Failed to parse XML. (LO 26005)
Any ideas as to what this could be? I have Crystal Xcelsius Enterprise 2008. The version is 5.0.0.99 and the build number is 12,0,0,121. I think I am all updated on service packs but I could be wrong. Any help is appreciated.I downloaded all of the service packs and fixes and now I am up to date. I am still getting the error with an additional error. This is what is says:
Failed to parse XML. (LO 26005) (LO 26000)
Any other ideas as to why this is happening? -
Need help on parsing xml file...
Hi all,
I need to collect some data from an Xml file using java. I have the following code with me but I am unable to get the required result. I am unable to get the data from the tags belonging to the header and footer elements. Please find the code and the sample xml file below.
Program to parse XML:
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class JobLogDetails3{
//No generics
List myJobs;
Document dom;
public JobLogDetails3(){
//create a list to hold the job objects
myJobs = new ArrayList();
public void runJobDetails() {
//parse the xml file and get the dom object
parseXmlFile();
//get each joblog element and create a job object
parseDocument();
//Iterate through the list and print the data
printData();
private void parseXmlFile(){
//get the factory
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//Using factory get an instance of document builder
DocumentBuilder db = dbf.newDocumentBuilder();
//parse using builder to get DOM representation of the XML file
dom = db.parse("test.xml");
}catch(ParserConfigurationException pce) {
pce.printStackTrace();
}catch(SAXException se) {
se.printStackTrace();
}catch(IOException ioe) {
ioe.printStackTrace();
private void parseDocument(){
//get the root elememt
Element docEle = dom.getDocumentElement();
//get a nodelist of <joblog> elements
NodeList nl = dom.getElementsByTagName("*");
if(nl != null && nl.getLength() > 0) {
for(int i = 0 ; i < nl.getLength();i++) {
//get the joblog element
Element el = (Element)nl.item(i);
//get the joblog object
Job J = getJob(el);
//add it to list
myJobs.add(J);
* I take an joblog element and read the values in, create
* an joblog object and return it
* @param JobEl
* @return
private Job getJob(Element JobEl) {
//for each <joblog> element get text or int values of
//name ,id, age and name
String jobServer = getTextValue(JobEl,"server");
String jobName = getTextValue(JobEl,"name");
String jobClient = getTextValue(JobEl,"machine_name");
String jobStart = getTextValue(JobEl,"start_time");
String jobType = getTextValue(JobEl,"type");
String jobEnd = getTextValue(JobEl,"end_time");
String jobSize = getTextValue(JobEl,"new_processed_bytes");
//Create a new Job with the value read from the xml nodes
Job J = new Job(jobServer,jobName,jobClient,jobStart,jobType,jobEnd,jobSize);
return J;
* I take a xml element and the tag name, look for the tag and get
* the text content
* i.e for <employee><name>John</name></employee> xml snippet if
* the Element points to employee node and tagName is name I will return John
* @param ele
* @param tagName
* @return
private String getTextValue(Element ele, String tagName) {
String textVal = null;
NodeList nl = ele.getElementsByTagName(tagName);
if(nl != null && nl.getLength() > 0) {
Element el = (Element)nl.item(0);
textVal = el.getFirstChild().getNodeValue();
return textVal;
* Calls getTextValue and returns a int value
* @param ele
* @param tagName
* @return
private int getIntValue(Element ele, String tagName) {
//in production application you would catch the exception
return Integer.parseInt(getTextValue(ele,tagName));
* Iterate through the list and print the
* content to console
private void printData(){
System.out.println("No of Jobs '" + myJobs.size() + "'.");
Iterator it = myJobs.iterator();
while(it.hasNext()) {
System.out.println(it.next().toString());
public static void main(String[] args){
//create an instance
JobLogDetails JLD = new JobLogDetails();
//call run example
JLD.runJobDetails();
Job Class
public class Job {
private String jobServer;
private String jobName;
private String jobClient;
private String jobStart;
private String jobType;
private String jobEnd;
private String jobSize;
public Job(){
public Job(String jobServer,String jobName,String jobClient,String jobStart,String jobType,String jobEnd,String jobSize ) {
this.jobServer = jobServer;
this.jobName = jobName;
this.jobClient = jobClient;
this.jobStart = jobStart;
this.jobType = jobType;
this.jobEnd = jobEnd;
this.jobSize = jobSize;
public String getjobServer() {
return jobServer;
public void setjobServer(String jobServer) {
this.jobServer = jobServer;
public String getjobName() {
return jobName;
public void setjobname(String jobName) {
this.jobName = jobName;
public String getjobClient() {
return jobClient;
public void setjobClient(String jobClient) {
this.jobClient = jobClient;
public String getjobStart() {
return jobStart;
public void setjobStart(String jobStart) {
this.jobStart = jobStart;
public String getjobType() {
return jobType;
public void setjobType(String jobType) {
this.jobType = jobType;
public String getjobEnd() {
return jobEnd;
public void setjobEnd(String jobEnd) {
this.jobEnd = jobEnd;
public String getjobSize() {
return jobSize;
public void setjobSize(String jobSize) {
this.jobSize = jobSize;
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(getjobServer());
sb.append(",");
sb.append(getjobName());
sb.append(",");
sb.append(getjobClient());
sb.append(",");
sb.append(getjobType());
sb.append(",");
sb.append(getjobStart());
sb.append(",");
sb.append(getjobEnd());
sb.append(",");
sb.append(getjobSize());
sb.append(",");
return sb.toString();
Sample XML File:
<?xml version="1.0" encoding="UTF-16" ?>
- <joblog>
<job_log_version version="2.0" />
- <header>
<filler>======================================================================</filler>
<server>Job server: TGBBAK</server>
<name>Job name: TGBSAP4-SQL-SQL DB Servers S2T - High-Weekly Full Backup</name>
<start_time>Job started: 26 September 2011 at 01:00:04</start_time>
<type>Job type: Backup</type>
<log_name>Job Log: GFD_TGBBAK_71887.xml</log_name>
<filler>======================================================================</filler>
</header>
<media_mount_date>Drive and media mount requested: 26/09/2011 01:00:04</media_mount_date>
- <media_drive_and_media_info>
<media_mount_date>Drive and media information from media mount: 26/09/2011 01:00:39</media_mount_date>
<robotic_library_name>Robotic Library Name: HP 1</robotic_library_name>
<drive_name>Drive Name: LTO4_2</drive_name>
<slot>Slot: 43</slot>
<media_label>Media Label: 000059L</media_label>
<media_guid>Media GUID: {a6ca0062-7a6f-4b4b-8144-732ca25f2f9d}</media_guid>
<media_overwrite_date>Overwrite Protected Until: 25/10/2011 19:24:58</media_overwrite_date>
<media_append_date>Appendable Until: 02/10/2011 14:00:30</media_append_date>
<media_set_target>Targeted Media Set Name: Weekly Tape</media_set_target>
</media_drive_and_media_info>
- <backup>
<filler>======================================================================</filler>
<title>Job Operation - Backup</title>
<append_or_overwrite>Media operation - append.</append_or_overwrite>
<compression>Compression Type: Hardware [if available, otherwise none]</compression>
<verify_option>WARNING: The option 'Verify after backup completes' was not selected. Performing a verify operation to make sure that media can be read after the backup has completed is recommended.</verify_option>
<filler>======================================================================</filler>
- <machine>
<machine_name>TGBSAP4.Tetley.Grp</machine_name>
<info>Network control connection is established between 10.22.2.18:3271 <--> 10.22.2.4:10000</info>
<info>Network data connection is established between 10.22.2.18:3301 <--> 10.22.2.4:3094</info>
- <set>
<set_resource_name>TGBSAP4.Tetley.Grp</set_resource_name>
<tape_name>Family Name: "Media created 25/09/2011 13:59:55"</tape_name>
- <volume>
<display_volume>Backup of "TGBSAP4.Tetley.Grp "</display_volume>
</volume>
<description>Backup set #45 on storage media #1 Backup set description: "Weekly Full Backup"</description>
<backup_type>Backup Method: Full - Back up entire database or filegroup</backup_type>
<agent_started>Microsoft SQL Server Agent: Started</agent_started>
<start_time>Backup started on 26/09/2011 at 01:01:45.</start_time>
- <database>
<database>Database PRD</database>
</database>
- <database>
<database>Database master</database>
</database>
- <database>
<database>Database model</database>
</database>
- <database>
<database>Database msdb</database>
</database>
<end_time>Backup completed on 26/09/2011 at 02:42:25.</end_time>
- <summary>
<backed_up_database>Backed up 4 databases</backed_up_database>
<new_processed_bytes>Processed 573363576542 bytes in 1 hour, 40 minutes, and 40 seconds.</new_processed_bytes>
<vlm_hist_rateformat2>Throughput rate: 5432 MB/min</vlm_hist_rateformat2>
</summary>
<filler>----------------------------------------------------------------------</filler>
</set>
</machine>
</backup>
- <footer>
<filler>======================================================================</filler>
<end_time>Job ended: 26 September 2011 at 02:43:12</end_time>
<engine_completion_status>Job completion status: Successful</engine_completion_status>
<filler>======================================================================</filler>
<completeStatus>19</completeStatus>
</footer>
</joblog>1. your code does not compile (in your main method you try to create an instance of a class which does not exist).
2. your XML document is not well formed.
+[Fatal Error] test.xml:34:74: The content of elements must consist of well-formed character data or markup.+
org.xml.sax.SAXParseException: The content of elements must consist of well-formed character data or markup.
Maybe there are other problems but you can start by fixing these. -
Parse XML in a java stored proc
I am trying to parse an xml document in a java stored procedure. Just following my nose, I have developed a stored proc that works fine in development (outside the database using JRE 1.4.1) using the Xerces 2.5 parser. But, after having transferred the xerces xercesImpl.jar, xmlapis.jar, and my implementation class into oracle using loadjava when I call my stored proc the code throws an exception trying to build the document with an error like:
NoClassDef exception org.apache.xerces.jaxp.DocumentFactoryBuilderImpl
My Code looks like this:
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
InputStream is = getXMLAsInputStream(xml);
try {
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse( is );
... parse the document ....
catch (FactoryConfigurationError e) {
// unable to get a document builder factory
The exception caught is a FactoryConfigurtionError.
I'm not particularly attached to xerces, I'm really just looking for a way to parse XML inside my java stored proc, so any help to solve my problem, or an alternative suggestion will be greatly appreciated.
thanks
DaleI looked again and sure enough the xerces implementation classes were missing. I had run a .cmd file containing these two lines, but it looks like only the first one ran...
loadjava -u ncc/xyz@usd -v -r M:\Database\JavaGeocode\Xerces2_5_0\xml-apis.jar
loadjava -u ncc/xyz@usd -v -r M:\Database\JavaGeocode\Xerces2_5_0\xercesImpl.jar
Now I've got everything working fine with Xerces!
Dale -
Hi ,
Good Morning to all
in osb replace action am using xquery transformation resource.
source code of xquery is :
====================================================================================
(:: pragma bea:global-element-parameter parameter="$addition1" element="ns0:Addition" location="../wsdl/NewWSDLFile.wsdl" ::)
(:: pragma bea:global-element-return element="ns1:process" location="../bpelprocess1_client_ep.wsdl" ::)
declare namespace ns1 = "http://xmlns.oracle.com/POProcessing/AdditionOSB/BPELProcess1";
declare namespace ns0 = "http://www.example.org/NewWSDLFile/";
declare namespace xf = "http://tempuri.org/ServiceCallout/trans/route/";
declare function xf:route($addition1 as element(ns0:Addition))
as element(ns1:process) {
<ns1:process>
<ns1:value1>{ data($addition1/value1) }</ns1:value1>
<ns1:value2>{ data($addition1/value2) }</ns1:value2>
</ns1:process>
declare variable $addition1 as element(ns0:Addition) external;
xf:route($addition1)
=====================================================
at the time of running "error is Error parsing XML: {err}FORG0005: expected exactly one item, got 0 items " in replace action.
how to resolve this problem...
Thanks & Regards
venkyThe reason for the error is the xquery is not able to find the values in the input... Check the input and namespaces...
Try...
<ns1:value1>{ data($addition1/ns0:value1) }</ns1:value1>
<ns1:value2>{ data($addition1/ns0:value2) }</ns1:value2>Cheers,
Vlad -
How do you store parsed XML data in an array
Hi, i am trying to complete a small program which implements the SAX parser to parse an XML file. My problem is that i am writing a custom class to store the parsed data into an array, and then make the array available to the main program via a simple method which returns the array. I know this must be very simple to do, but i seem to have developed a mental block with this part of the program. I can parse the data and print all the elements to the screen, but i just cant figure out how to store all the data elements into the array. I will post the class which is supposed to do this, and ask anyone out there if they know what i'm doing wrong, and also, if there is a more effeicient way of achieving this ( i expect there definitely is!! but i have never used the SAX parser before and am getting confused by the API docs on it!!) Any help very much appreciated.
Here is my attempt at coding the class to handle the parsed XML data
class Sink extends org.xml.sax.helpers.DefaultHandler
implements org.xml.sax.ContentHandler{
Customer[] customers = new Customer[20];
int count = 1;
int x = 0;
int tagCount = 0;
String name;
String custID;
String username;
String address;
String phoneNum;
public void startElement(String uri, String localName, String rawName, final org.xml.sax.Attributes attributes)throws org.xml.sax.SAXException{
//count the number of <name> tags in the XML file
if(rawName.equals("name")){
tagCount++;
public void characters(char[] ch, int start, int len){
//get the current string
String text = new String(ch, start, len);
String text1 = text.trim();
//there are 5 elements for each customer found in the XML file so when the count reaches 6
// i reset this to 1
if(count == 6){
count = count - 5;
if(text1.length()>0 && count == 1){
name = text1;
System.out.println(name);
}else{
if(text1.length()>0 && count == 2){
custID = text1;
System.out.println(custID);
}else{
if(text1.length()>0 && count == 3){
username = text1;
System.out.println(username);
}else{
if(text1.length()>0 && count == 4){
address = text1;
System.out.println(address);
}else{
if(text1.length()>0 && count == 5){
phoneNum = text1;
System.out.println(phoneNum);
//add data to the customer array
customers[x] = new Customer(name, custID, username, address, phoneNum);
// increment the array index counter
x = x+1;
}//end of if
}//end else
}//end else
}//end else
}//end else
}//end of characters method
public void endDocument(){
System.out.println("There are " + tagCount +
" <name> elements.");
}//end of class Sink
Before the end of this class i also need to make the array available to the calling program!!
Any help would be much appreciated
Thanks
IainOk, yer going about this all the wrong way. You shouldn't have to maintain a count of all the elements. Basically you are locking yourself into the XML tags not only all being there but are assuming they are all in the same order. What you should do is in your characters() method, put all of the characters into a string buffer. Then, in endElement() (which you dont use btw, you should) you grab the information that is in the string buffer and store it into your Customer object depending on what the tagName is.
Also, you should probably use a List to store all the Customer objects and not an single array, it's more dynamic and you arent locked into a set number of Customers.
I wont do it all for you, but I'll give you a good outline to use.
public class CustomerHandler extends DefaultHandler {
private java.util.List customerList; // List of Customer objects
private java.util.StringBuffer buf; // StringBuffer to store the string of characters between the start and end tags
private Customer customer; // Customer object that is initialized with each entry.
public CustomerHandler() {
customerList = new java.util.ArrayList(); // Initialize the List
buf = new java.util.StringBuffer(); // Initialize the string buffer
// Make your customer list available to other classes
public java.util.List getCustomerList() {
return customerList;
public void startElement(String nsURI, String sName, String tagName, Attributes attributes) throws SAXException {
// Clear the String Buffer
// If the tagName is "Customer" then create a new Customer object
public void characters(char[] ch, int start, int length) {
// append the characters into the string buffer
public void endElement(String nsURI, String sName, String tagName) throws SAXException {
// If the tagName is "Customer" add your customer object to the List
// Place the data from the String Buffer into a String
// Depending on the tagName, call the appropriate set method on your customer object
} -
Can't parse xml from applet using dom on linux on Netscape 7 using jre 1.4.
Hi,
I can't seem to parse xml from an applet on linux on Netscape 7 using the JRE 1.4.
My code looks like the following:
StringBufferInputStream is = new StringBufferInputStream("<foo></foo>");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = null;
try
builder = factory.newDocumentBuilder();
domDocument = builder.parse(is); // this line creates an exception
catch (Exception e)
System.out.println(e);
This code works fine from an applet on windows. On linux, the error message is:
java.security.AccessControlException: access denied (java.util.PropertyPermission entityExpansionLimit read)
I've tried both JRE 1.4.0_04 and 1.4.1_03
Thanks!
QThere's another posting about this same problem (platform unspecified), but the same error message. I was also having this problem (Windows 1.4.03) and swithced back to 1.4.01 and the problem went away. In the future, I may sign my applets to get a more generous security policy. But, I'm sure it'll be a lot of work (vs. a line of code somewhere).
Maybe you are looking for
-
Error while cancelling the Invoice
Dear Gurus The Billing document was raised on a wrong customer on may month. Now that was realized, and that invoice was canceled but wrongly the date was given as may month. The FI period was closed for may month and the current period is july. So t
-
Can't create a WPA2-Enterprise wireless connection; missing Microsoft: PEAP
OS: Windows 7 64-bit Enterprise Hardware: Lenovo T410S w/Intel 5300 ABGN Wireless If I try to build the wireless connection manually and choose WPA2-Enterprise, then click next, I get 'An unexpected error occurred.' and no options to configure; just
-
How do i delete all info and macbook before giving it to grandson - (restating?
Got a new MacBook Pro and want to give my grandson old MacBook - how do I delete all info, etc on the od unit? Can I do a reset like I can on my iPod/iPad?
-
RESET THE NO. OF PROCESSORS IN THE BOOT OPTION TO NORMAL
I accidently switched the number of prcessors to '1' in the boot option in my laptop and clicked on apply & my pc is working very slow than before and it suddenly shut down's automatically can anyone please help me with this
-
Exception deserializing from BlazeDS with the help of [RemoteClass] metadata
Hi, In my BlazeDS application (AMF based), I am throwing two kind of java Exceptions: TechnicalException extends RuntimeException : this one is thrown to the Flex client when any unexpected error on the server is caught BusinessException extends Exce