XML: SAX vs. DOM vs. jDom etc.
Is there any reason to use SAX or DOM? I mean is jdom always the best choice? Some information?
http://java.sun.com/webservices/docs/1.0/tutorial/doc/JAXPDOM2.html#67733
Similar Messages
-
Hi folks,
I'm on the verge of emotional breakdown trying to get my head around working with XML in Java, and I would really appreciate a bit of help.
What I would like to do is to store database metadata in an XML file.
The steps I have taken so far are to read the metadata into a structure of objects (a metadata object that containts arraylists of tables objects that contain arraylists of columns object. Each of these object types holds information about the table or column concerned (table name, column type etc).
I'm stuck when it comes to deciding whether to use SAX or DOM to write / read these files.
Now, I understand that SAX is for sequential access, and DOM is for situations where you'd like to manipulate the XML tree. I guess that, given the nature of my data structure DOM would make more sense? Then I can define a node for each table, then off them, define a node for each column... Or am I missing the point here?
Can anyone give me a nudge in the right direction?
Thanks in advance
s.Thanks for replying!
Duffymo, I'd rather keep the xml content to the data
to make the files easy to edit / write by hand.Not following you here.
I understand that you want XML files, but XStream can take them and turn them into Java objects for you. Conversely, you can take a graph of Java objects and serialize them as XML.
No worries about DOM or SAX that way.
% -
System property org.xml.sax.driver not specified
I'm getting the error:
System property org.xml.sax.driver not specified
How do I set this property? Why doesn't it find the default?
I'm using WL6.0
Imports:
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.w3c.dom.Document;
import org.w3c.dom.DOMException;
Code Snippet:
try
File stylesheet = new File("LaborDistHours.xsl");
LaborDistHours ldh = new LaborDistHours("1041410011",
"01-feb-2000", "30-mar-2000");
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
StringReader reportXML = new StringReader( ldh.getReportXML() );
document = builder.parse(new InputSource( reportXML ));
TransformerFactory tFactory = TransformerFactory.newInstance();
StreamSource stylesource = new StreamSource(stylesheet);
Transformer transformer = tFactory.newTransformer(stylesource);
//error occurs here
DOMSource source = new DOMSource(document);
StringWriter reportXLST = new StringWriter();
StreamResult result = new StreamResult(reportXLST);
transformer.transform(source, result);
Steven Ford ([email protected])
"...That we here highly resolve that these dead shall not have died in
vain - that this nation, under God, shall have a new birth of Freedom - and
that Government of the people, by the people and for the people shall not
perish from the earth." Abraham Lincolntry to look on xml.apache.org for this error. There should be some pages describing how and why setup this property.
Basically, these properties defines factories for javax extensions. javax defines interfaces and providers than supply implementations, so for example you can use different XML parsers implementations (we use Xalan for one OC4J container and original ORACLE parser for other). To bind this together they use some defined mechanism like setting system property of including special manifest file etc. (I don't know about details)
Myrra -
Org.xml.sax.SAXException: Error:General Schema Error
I am getting the error below. Any clues/workarounds? I am
using WL 6.1.
Thanks in advance,
Eva
The following files are below:
Validate.java
BMDefaultHandler.java
validate.xml
validate.xsd
org.xml.sax.SAXException: Error:General Schema Error: Grammar with uri:http://schemas.xmlsoap.org/soap/envelope/
, can not be
found; schema namespace maybe wrong:
Xerces supports schemas from the "http://www.w3.org/2001/XMLSchema" namespace
or
the instance document's namespace may not match the targetNamespace of the schema.
at
com.bluemartini.xml.BMDefaultHandler.error(BMDefaultHandler.java:32)
at
org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1249)
at
org.apache.xerces.validators.common.XMLValidator.reportRecoverableXMLEr
ror(XMLValidator.java:1821)
at
org.apache.xerces.validators.common.XMLValidator.validateElementAndAttr
ibutes(XMLValidator.java:3232)
at
org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLVa
lidator.java:1229)
at
org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentS
canner.java:1806)
at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispat
ch(XMLDocumentScanner.java:949)
at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentSca
nner.java:381)
at
org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
at
org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.ja
va:195)
at
javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:191)
at com.bluemartini.test.Validate.main(Validate.java:32)
===Validate.java
package com.bluemartini.test;
import java.io.*;
import org.w3c.dom.*;
import com.bluemartini.xml.*;
// JAXP imports
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
* Sample test case.
* Eva Flora
public class Validate {
public static void main(String[] argv) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
factory.setAttribute("http://xml.org/sax/features/validation", Boolean.TRUE);
factory.setAttribute("http://apache.org/xml/features/validation/schema",
Boolean.TRUE);
DocumentBuilder builder = factory.newDocumentBuilder();
BMDefaultHandler bmErrorHandler = new BMDefaultHandler();
builder.setErrorHandler(bmErrorHandler);
File temp = new File("validate.xml");
Document doc = builder.parse(temp);
} catch (Exception e) {
e.printStackTrace();
===BMDefaultHandler.java
package com.bluemartini.xml;
import com.bluemartini.dna.*;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.*;
public class BMDefaultHandler extends
DefaultHandler
public BMDefaultHandler()
public void warning(SAXParseException spe)
throws SAXException
System.out.println("Warning: " + spe.getMessage());
public void error(SAXParseException spe)
throws SAXException
throw new SAXException("Error:" + spe.getMessage());
public void fatalError(SAXParseException spe)
throws SAXException
throw new SAXException("Fatal Error: " + spe.getMessage());
===validate.xml
<?xml version="1.0" encoding="UTF-8"?>
<soapns:Envelope xmlns:soapns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" xmlns:test="http://www.test.com"
xsi:noNamespaceSchemaLocation="validate.xsd">
<soapns:Header/>
<soapns:Body>
<test:GWSMapRequestMessage>
</test:GWSMapRequestMessage>
</soapns:Body>
</soapns:Envelope>
===validate.xsd
<schema xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="GWSMapRequestMessage" type="TestType"/>
<complexType name="TestType">
</complexType>
</schema>I am getting the error below. Any clues/workarounds? I am
using WL 6.1.
Thanks in advance,
Eva
The following files are below:
Validate.java
BMDefaultHandler.java
validate.xml
validate.xsd
org.xml.sax.SAXException: Error:General Schema Error: Grammar with uri:http://schemas.xmlsoap.org/soap/envelope/
, can not be
found; schema namespace maybe wrong:
Xerces supports schemas from the "http://www.w3.org/2001/XMLSchema" namespace
or
the instance document's namespace may not match the targetNamespace of the schema.
at
com.bluemartini.xml.BMDefaultHandler.error(BMDefaultHandler.java:32)
at
org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1249)
at
org.apache.xerces.validators.common.XMLValidator.reportRecoverableXMLEr
ror(XMLValidator.java:1821)
at
org.apache.xerces.validators.common.XMLValidator.validateElementAndAttr
ibutes(XMLValidator.java:3232)
at
org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLVa
lidator.java:1229)
at
org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentS
canner.java:1806)
at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispat
ch(XMLDocumentScanner.java:949)
at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentSca
nner.java:381)
at
org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
at
org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.ja
va:195)
at
javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:191)
at com.bluemartini.test.Validate.main(Validate.java:32)
===Validate.java
package com.bluemartini.test;
import java.io.*;
import org.w3c.dom.*;
import com.bluemartini.xml.*;
// JAXP imports
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
* Sample test case.
* Eva Flora
public class Validate {
public static void main(String[] argv) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
factory.setAttribute("http://xml.org/sax/features/validation", Boolean.TRUE);
factory.setAttribute("http://apache.org/xml/features/validation/schema",
Boolean.TRUE);
DocumentBuilder builder = factory.newDocumentBuilder();
BMDefaultHandler bmErrorHandler = new BMDefaultHandler();
builder.setErrorHandler(bmErrorHandler);
File temp = new File("validate.xml");
Document doc = builder.parse(temp);
} catch (Exception e) {
e.printStackTrace();
===BMDefaultHandler.java
package com.bluemartini.xml;
import com.bluemartini.dna.*;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.*;
public class BMDefaultHandler extends
DefaultHandler
public BMDefaultHandler()
public void warning(SAXParseException spe)
throws SAXException
System.out.println("Warning: " + spe.getMessage());
public void error(SAXParseException spe)
throws SAXException
throw new SAXException("Error:" + spe.getMessage());
public void fatalError(SAXParseException spe)
throws SAXException
throw new SAXException("Fatal Error: " + spe.getMessage());
===validate.xml
<?xml version="1.0" encoding="UTF-8"?>
<soapns:Envelope xmlns:soapns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" xmlns:test="http://www.test.com"
xsi:noNamespaceSchemaLocation="validate.xsd">
<soapns:Header/>
<soapns:Body>
<test:GWSMapRequestMessage>
</test:GWSMapRequestMessage>
</soapns:Body>
</soapns:Envelope>
===validate.xsd
<schema xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="GWSMapRequestMessage" type="TestType"/>
<complexType name="TestType">
</complexType>
</schema> -
Org.xml.sax.SAXException: Error:General Schema Error: Grammar
I am getting the error below. Any clues/workarounds? I am
using WL 6.1.
Thanks in advance,
Eva
The following files are below:
Validate.java
BMDefaultHandler.java
validate.xml
validate.xsd
org.xml.sax.SAXException: Error:General Schema Error: Grammar with uri:http://schemas.xmlsoap.org/soap/envelope/
, can not be
found; schema namespace maybe wrong:
Xerces supports schemas from the "http://www.w3.org/2001/XMLSchema" namespace
or
the instance document's namespace may not match the targetNamespace of the schema.
at
com.bluemartini.xml.BMDefaultHandler.error(BMDefaultHandler.java:32)
at
org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1249)
at
org.apache.xerces.validators.common.XMLValidator.reportRecoverableXMLEr
ror(XMLValidator.java:1821)
at
org.apache.xerces.validators.common.XMLValidator.validateElementAndAttr
ibutes(XMLValidator.java:3232)
at
org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLVa
lidator.java:1229)
at
org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentS
canner.java:1806)
at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispat
ch(XMLDocumentScanner.java:949)
at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentSca
nner.java:381)
at
org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
at
org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.ja
va:195)
at
javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:191)
at com.bluemartini.test.Validate.main(Validate.java:32)
===Validate.java
package com.bluemartini.test;
import java.io.*;
import org.w3c.dom.*;
import com.bluemartini.xml.*;
// JAXP imports
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
* Sample test case.
* Eva Flora
public class Validate {
public static void main(String[] argv) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
factory.setAttribute("http://xml.org/sax/features/validation", Boolean.TRUE);
factory.setAttribute("http://apache.org/xml/features/validation/schema",
Boolean.TRUE);
DocumentBuilder builder = factory.newDocumentBuilder();
BMDefaultHandler bmErrorHandler = new BMDefaultHandler();
builder.setErrorHandler(bmErrorHandler);
File temp = new File("validate.xml");
Document doc = builder.parse(temp);
} catch (Exception e) {
e.printStackTrace();
===BMDefaultHandler.java
package com.bluemartini.xml;
import com.bluemartini.dna.*;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.*;
public class BMDefaultHandler extends
DefaultHandler
public BMDefaultHandler()
public void warning(SAXParseException spe)
throws SAXException
System.out.println("Warning: " + spe.getMessage());
public void error(SAXParseException spe)
throws SAXException
throw new SAXException("Error:" + spe.getMessage());
public void fatalError(SAXParseException spe)
throws SAXException
throw new SAXException("Fatal Error: " + spe.getMessage());
===validate.xml
<?xml version="1.0" encoding="UTF-8"?>
<soapns:Envelope xmlns:soapns="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema" xmlns:test="http://www.test.com"
xsi:noNamespaceSchemaLocation="validate.xsd">
<soapns:Header/>
<soapns:Body>
<test:GWSMapRequestMessage>
</test:GWSMapRequestMessage>
</soapns:Body>
</soapns:Envelope>
===validate.xsd
<schema xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="GWSMapRequestMessage" type="TestType"/>
<complexType name="TestType">
</complexType>
</schema>I guess the problem is due to the schema namespace
you are using.
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
pls try with :
"http://www.w3.org/2001/XMLSchema"
regards,
-manoj
"Eva Flora" <[email protected]> wrote in message
news:[email protected]...
I am getting the error below. Any clues/workarounds? I am
using WL 6.1.
Thanks in advance,
Eva
The following files are below:
Validate.java
BMDefaultHandler.java
validate.xml
validate.xsd
org.xml.sax.SAXException: Error:General Schema Error: Grammar with
uri:http://schemas.xmlsoap.org/soap/envelope/
, can not be
found; schema namespace maybe wrong:
Xerces supports schemas from the "http://www.w3.org/2001/XMLSchema"
namespace
or
the instance document's namespace may not match the targetNamespace of the
schema.
at
com.bluemartini.xml.BMDefaultHandler.error(BMDefaultHandler.java:32)
at
org.apache.xerces.framework.XMLParser.reportError(XMLParser.java:1249)
at
org.apache.xerces.validators.common.XMLValidator.reportRecoverableXMLEr
ror(XMLValidator.java:1821)
at
org.apache.xerces.validators.common.XMLValidator.validateElementAndAttr
ibutes(XMLValidator.java:3232)
at
org.apache.xerces.validators.common.XMLValidator.callStartElement(XMLVa
lidator.java:1229)
at
org.apache.xerces.framework.XMLDocumentScanner.scanElement(XMLDocumentS
canner.java:1806)
at
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher.dispat
ch(XMLDocumentScanner.java:949)
at
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDocumentSca
nner.java:381)
at
org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1098)
at
org.apache.xerces.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.ja
va:195)
at
javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:191)
at com.bluemartini.test.Validate.main(Validate.java:32)
===Validate.java
package com.bluemartini.test;
import java.io.*;
import org.w3c.dom.*;
import com.bluemartini.xml.*;
// JAXP imports
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.ParserConfigurationException;
* Sample test case.
* Eva Flora
public class Validate {
public static void main(String[] argv) {
try {
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
factory.setAttribute("http://xml.org/sax/features/validation",
Boolean.TRUE);
factory.setAttribute("http://apache.org/xml/features/validation/schema",
Boolean.TRUE);
DocumentBuilder builder = factory.newDocumentBuilder();
BMDefaultHandler bmErrorHandler = new BMDefaultHandler();
builder.setErrorHandler(bmErrorHandler);
File temp = new File("validate.xml");
Document doc = builder.parse(temp);
} catch (Exception e) {
e.printStackTrace();
===BMDefaultHandler.java
package com.bluemartini.xml;
import com.bluemartini.dna.*;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.*;
public class BMDefaultHandler extends
DefaultHandler
public BMDefaultHandler()
public void warning(SAXParseException spe)
throws SAXException
System.out.println("Warning: " + spe.getMessage());
public void error(SAXParseException spe)
throws SAXException
throw new SAXException("Error:" + spe.getMessage());
public void fatalError(SAXParseException spe)
throws SAXException
throw new SAXException("Fatal Error: " + spe.getMessage());
===validate.xml
<?xml version="1.0" encoding="UTF-8"?>
<soapns:Envelope xmlns:soapns="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2000/10/XMLSchema"
xmlns:test="http://www.test.com"
xsi:noNamespaceSchemaLocation="validate.xsd">
<soapns:Header/>
<soapns:Body>
<test:GWSMapRequestMessage>
</test:GWSMapRequestMessage>
</soapns:Body>
</soapns:Envelope>
===validate.xsd
<schema xmlns="http://www.w3.org/2000/10/XMLSchema">
<element name="GWSMapRequestMessage" type="TestType"/>
<complexType name="TestType">
</complexType>
</schema>
[att1.html] -
Hi,
I am running Jdeveloper 9.0.3.1 and using embedded OC4J.
Getting following error when trying to run the application. Please help me if you can.
Thanks
Tareq
at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(XMLReaderFactory.java:90)
at net.sundog.struts.ActionFinderPlugIn.parseHtmlFiles(ActionFinderPlugIn.java:76)
at net.sundog.struts.ActionFinderPlugIn.searchDirectory(ActionFinderPlugIn.java:64)
at net.sundog.struts.ActionFinderPlugIn.init(ActionFinderPlugIn.java:50)
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:1156)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:472)
at javax.servlet.GenericServlet.init(GenericServlet.java:258)
at com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpApplication.loadServlet(HttpApplication.java:1956)
at com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpApplication.findServlet(HttpApplication.java:4355)
at com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpApplication.getRequestDispatcher(HttpApplication.java:2750)
at com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:617)
at com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.run(HttpRequestHandler.java:259)
at com.evermind[Oracle9iAS (9.0.3.0.0) Containers for J2EE].server.http.HttpRequestHandler.run(HttpRequestHandler.java:106)
at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:803)
at java.lang.Thread.run(Thread.java:534)try to look on xml.apache.org for this error. There should be some pages describing how and why setup this property.
Basically, these properties defines factories for javax extensions. javax defines interfaces and providers than supply implementations, so for example you can use different XML parsers implementations (we use Xalan for one OC4J container and original ORACLE parser for other). To bind this together they use some defined mechanism like setting system property of including special manifest file etc. (I don't know about details)
Myrra -
Org.xml.sax.SAXParseException: Document root element is missing.
Hi,
I am trying to get the portal login id from a weblogic server based application from iplaet portal server.
I get this follwoing error
org.xml.sax.SAXParseException: Document root element is missing.
at com.sun.xml.parser.Parser.fatal(Parser.java:2817)
at com.sun.xml.parser.Parser.fatal(Parser.java:2805)
at com.sun.xml.parser.Parser.parseInternal(Parser.java:493)
at com.sun.xml.parser.Parser.parse(Parser.java:284)
at com.sun.xml.tree.XmlDocument.createXmlDocument(XmlDocument.java:226)
at com.iplanet.portalserver.util.XMLParser.<init>(XMLParser.java:70)
at com.iplanet.portalserver.naming.share.NamingResponseParser.<init>(NamingResponseParser.java:33)
at com.iplanet.portalserver.naming.share.NamingResponse.parseXML(NamingResponse.java:74)
at com.iplanet.portalserver.naming.WebtopNaming.updateNamingTable(WebtopNaming.java:174)
at com.iplanet.portalserver.naming.WebtopNaming.getNamingProfile(WebtopNaming.java:155)
at com.iplanet.portalserver.naming.WebtopNaming.getServiceURL(WebtopNaming.java:57)
at com.iplanet.portalserver.session.Session.getSessionServiceURL(Session.java:534)
at com.iplanet.portalserver.session.Session.getSessionServiceURL(Session.java:520)
at com.iplanet.portalserver.session.Session.getSession(Session.java:414)
at jsp_servlet.__eatonPortalLogin._jspService(__eatonPortalLogin.java:155)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1075)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:418)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:462)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:306)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:5517)
at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:685)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3156)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2506)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:234)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:210)
<May 19, 2004 9:01:12 AM EDT> <Error> <HTTP> <101017> <[ServletContext(id=4873279,name=ematrix,context-path=/ematrix)] Root cause of ServletException
com.iplanet.portalserver.session.SessionException
at com.iplanet.portalserver.session.Session.getSessionServiceURL(Session.java:539)
at com.iplanet.portalserver.session.Session.getSessionServiceURL(Session.java:520)
at com.iplanet.portalserver.session.Session.getSession(Session.java:414)
at jsp_servlet.__eatonPortalLogin._jspService(__eatonPortalLogin.java:155)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1075)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:418)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:462)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:306)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:5517)
at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:685)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3156)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2506)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:234)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:210)
Any help/pointers will be appreciated.
AshishJust for anyone else who hits this problem: I encountered the same issue with an XML document that XMLSpy claims is quite well formed. I opened the document in a hex editor, and there at the from was a three-byte byte order marker - the marker that I believe the UTF-8 standard says is optional. I removed these three bytes, and the file was parsed correctly.
In this case, the XML file was created using a Microsft DOM (save).
My solution is to make the java parser - as I use it - a tad more robust: Open the file and create an input stream - a pushback input stream. Read the first three bytes; if they are NOT a BOM, then push those bytes back. Now - in any case - give the stream to the parser to read.
try {
// Open file for reading.
f = new File(path);
FileInputStream fis = new FileInputStream(f);
PushbackInputStream pis = new PushbackInputStream(fis);
byte[] buf = new byte[3];
pis.read(buf, 0, 3);
if (! (buf[0] == 0x00EF) && (buf[1] == 0x00BB) && (buf[2] == 0x00BF) ) {
pis.unread(buf, 0, 3);
builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
doc = builder.parse(pis);
catch (Exception x) {
x.printStackTrace();
} -
XML SAX parser that support LexicalHandler
Hello,
I'm looking for an XML SAX parser that support a LexicalHandler.
I have xml files that are not well formed, ie: (&, <, >, etc...) characters within tags and I need to ignore them.
Anyone have a link to some opensource library ??
Thanks,
SamirDon't waste your time. Using a LexicalHandler isn't going to help with parsing malformed XML. You should get the person who produced those files to replace them with correct XML.
PC² -
Reading from XML file using DOM parser.
Hi,
I have written the following java code to read the XML file and print the values. It reads the XML file. It gets the node NAME and prints it. But it returns null when trying to get the node VALUE. I am unable to figure out why.
Can anyone please help me with this.
Thanks and Regards,
Shweta
import java.io.*;
import java.net.*;
import java.util.*;
import oracle.xml.parser.v2.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;
public class ReadNodes
private static XMLDocument mDoc;
public ReadNodes () {
try {
DOMParser lParser = new DOMParser();
URL lUrl = createURL("mot.xml");
System.out.println("after creating the URL object ");
lParser.setErrorStream(System.out);
lParser.showWarnings(true);
lParser.parse(lUrl);
mDoc = lParser.getDocument();
System.out.println("after creating the URL object "+mDoc);
lParser.reset();
} catch (Exception e) {
e.printStackTrace();
} // end catch block
} // End of constructor
public void read() throws DOMException {
try {
NodeList lTrans = this.mDoc.getElementsByTagName("TRANSLATION");
for(int i=0;i<lTrans.getLength();i++) {
NodeList lTrans1 = lTrans.item(i).getChildNodes();
System.out.println("lTrans1.item(0).getNodeName : " + lTrans1.item(0).getNodeName());
System.out.println("lTrans1.item(0).getNodeValue : " + lTrans1.item(0).getNodeValue());
System.out.println("lTrans1.item(1).getNodeName : " + lTrans1.item(1).getNodeName());
System.out.println("lTrans1.item(1).getNodeValue : " + lTrans1.item(1).getNodeValue());
} catch (Exception e) {
System.out.println("Exception "+e);
e.printStackTrace();
} catch (Throwable t) {
System.out.println("Exception "+t);
public static URL createURL(String pFileName) throws MalformedURLException {
URL url = null;
try {
url = new URL(pFileName);
} catch (MalformedURLException ex) {
File f = new File(pFileName);
String path = f.getAbsolutePath();
String fs = System.getProperty("file.separator");
System.out.println(" path of file : "+path +"separator " +fs);
if (fs.length() == 1) {
char sep = fs.charAt(0);
if (sep != '/')
path = path.replace(sep, '/');
if (path.charAt(0) != '/')
path = '/' + path;
path = "file://" + path;
System.out.println("path is : "+path);
// Try again, if this throws an exception we just raise it up
url = new URL(path);
} // End catch block
return url;
} // end method create URL
public static void main (String args[]) {
ReadNodes mXML = new ReadNodes();
mXML.read();
The XML file that I am using is
<?xml version = "1.0"?>
<DOCUMENT>
<LANGUAGE_TRANS>
<TRANSLATION>
<CODE>3</CODE>
<VALUE>Please select a number</VALUE>
</TRANSLATION>
<TRANSLATION>
<CODE>5</CODE>
<VALUE>Patni</VALUE>
</TRANSLATION>
<TRANSLATION>
<CODE>6</CODE>
<VALUE>Status Messages</VALUE>
</TRANSLATION>
<TRANSLATION>
<CODE>7</CODE>
<VALUE>Progress</VALUE>
</TRANSLATION>
<TRANSLATION>
<CODE>8</CODE>
<VALUE>Create Data Files...</VALUE>
</TRANSLATION>
<TRANSLATION>
<CODE>9</CODE>
<VALUE>OK</VALUE>
</TRANSLATION>
</LANGUAGE_TRANS>
</DOCUMENT>because what you want is not the node value of CODE but the node value of the text nodes into it!
assuming only one text node into it, try this:
System.out.println("lTrans1.item(0).getNodeName : " + lTrans1.item(0).getFirstChild().getNodeValue()); -
How to get nodes and its attributes of an XML file usiong DOM parsing?
how to get nodes and its attributes of an XML file usiong DOM parsing?
i am new to XML parsing.......
Thanking you........import org.w3c.dom.Document;
import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException; ...
//Setup the document
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File("MY_XML_FILE.xml"));
//get elemets by name
String elementValue = doc.getElementsByTagName("MY_ELEMENT").item(0).getTextContent();
//This method can return multiple nodes, in this instance I get item(0) , first nodeRead the api for other methods of getting data. -
In Java Mapping Whether to SAX or DOM ?
While implementing Java Mapping which of the following SAX , DOM parsers is the most efficient way to implement it.
I mean considering the voulume of data in the XML format is large which usage will give me most optimal performance .
It would be nice if someone could give a sample most optimal java code using JAXP where input stream is read and after processing written to output stream.
regards
Nilesh Taunk.Hi Nilesh,
>>>While implementing Java Mapping which of the following SAX , DOM parsers is the most efficient way to implement it.
there's no one good answer fot this question
except: it depends:)
SAX and DOM are a little different parsers
so it depends what will your java mapping
have to do: if it will change the
structure or maybe it will only change a few tags,
or maybe it will do something else
have a look at the page below to read a simple
comparision between SAX and DOM
http://www.scit.wlv.ac.uk/~jphb/cp2101/week4/XML_Parsing.html
or this thread:
http://www.biglist.com/lists/xsl-list/archives/200301/msg01318.html
they will give you some idea which one to choose
depending on your requirements
BTW
remember use java mappings only
if you cannot use graphical mapping (very easy debugging)
and if your document cannot be parsed (maybe huge documents)
with XSLT which is supported by many graphilal tools
Regards,
michal
<a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions">XI FAQ - Frequently Asked Questions</a> -
hi
i am trying to parse a document and change a specific text value within an element althouh when i run the program it changes the nodes text however when i check the xml file it doesnt show the changes it remains the same the code that i am using is as follow iwould be greatful if any one culd help:
// ReplaceText.java
// Reads intro.xml and replaces a text node.
// Java core packages
import java.io.*;
// Java extension packages
import javax.xml.parsers.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.*;
// third-party libraries
import org.xml.sax.*;
import org.w3c.dom.*;
public class ReplaceText {
private Document document;
public ReplaceText()
// parse document, find/replace element, output result
try {
// obtain default parser
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
// set parser as validating
factory.setValidating( true );
// obtain object that builds Documents
DocumentBuilder builder = factory.newDocumentBuilder();
// set error handler for validation errors
builder.setErrorHandler( new MyErrorHandler() );
System.err.println( "reading" );
// obtain document object from XML document
File f = new File("D:/Documents and Settings/Administrator/Desktop/xml adv java bk/appC/intro.xml");
System.err.println( "reading" );
document = builder.parse(f);
//document = builder.parse( new File( "intro.xml" ) );
System.err.println( "reading document" );
// retrieve the root node
Node root = document.getDocumentElement();
if ( root.getNodeType() == Node.ELEMENT_NODE ) {
Element myMessageNode = ( Element ) root;
NodeList messageNodes =
myMessageNode.getElementsByTagName( "message5" );
if ( messageNodes.getLength() != 0 ) {
Node message = messageNodes.item( 0 );
System.out.println("iiiii");
// create text node
Text newText = document.createTextNode(
"New Changed Message!!" );
// get old text node
Text oldText =
( Text ) message.getChildNodes().item( 0 );
// replace text
//message.removeChild(oldText);
message.replaceChild( newText, oldText );
// output Document object
// create DOMSource for source XML document
Source xmlSource = new DOMSource( document );
// create StreamResult for transformation result
Result result = new StreamResult( System.out );
// create TransformerFactory
TransformerFactory transformerFactory =
TransformerFactory.newInstance();
// create Transformer for transformation
Transformer transformer =
transformerFactory.newTransformer();
transformer.setOutputProperty( OutputKeys.INDENT, "yes" );
transformer.setOutputProperty( OutputKeys.STANDALONE, "yes" );
// transform and deliver content to client
transformer.transform( xmlSource, result );
// handle exception creating DocumentBuilder
catch ( ParserConfigurationException parserException ) {
parserException.printStackTrace();
// handle exception parsing Document
catch ( SAXException saxException ) {
saxException.printStackTrace();
// handle exception reading/writing data
catch ( IOException ioException ) {
ioException.printStackTrace();
System.exit( 1 );
// handle exception creating TransformerFactory
catch (
TransformerFactoryConfigurationError factoryError ) {
System.err.println( "Error while creating " +
"TransformerFactory" );
factoryError.printStackTrace();
// handle exception transforming document
catch ( TransformerException transformerError ) {
System.err.println( "Error transforming document" );
transformerError.printStackTrace();
public static void main( String args[] )
ReplaceText replace = new ReplaceText();
}the xml file that i am using is as follows:
<?xml version = "1.0"?>
<!-- Fig. 28.10 : intro.xml -->
<!-- Simple introduction to XML markup -->
<!DOCTYPE myMessage [
<!ELEMENT myMessage (message, message5)>
<!ELEMENT message (#PCDATA)>
<!ELEMENT message5 (#PCDATA)>
]>
<myMessage>
<message>welcome to the xml shhhhhushu</message>
<message5>welcome to the xml shhhhhushu</message5>
</myMessage>i would be greatful if some one could please help.....See if the Text 'oldText' actually has any text within it. Sometimes in DOM parsing, you will get something like:
Element
Text (blank)
Text (actual)
Text (blank)Whereas you would expect to receive:
Element
Text (actual)See if that is the case. If yes, modify your logic to iterate through the child text nodes until one with actual text inside of it (getNodeValue()) is found.
- Saish -
SAX and DOM - treating encoding differently ??
Hello!
I have run into a strange problem - I was parsing my xml document using
WebLogic's DOM and SAX parsers to compare their performance, and I found
that while using their DOM parser I was able to parse the document just
fine, using the SAX parser gave me an error:
org.xml.sax.SAXParseException: Declared encoding "UTF-8" does not match
actual one "ISO8859_1"
I don't use any extended characters in the xml document, and even if I
did - I'm puzzled as to why DOM parser would process it without
complaining but the SAX paser would not??
Thanks,
MarinaHello!
I have run into a strange problem - I was parsing my xml document using
WebLogic's DOM and SAX parsers to compare their performance, and I found
that while using their DOM parser I was able to parse the document just
fine, using the SAX parser gave me an error:
org.xml.sax.SAXParseException: Declared encoding "UTF-8" does not match
actual one "ISO8859_1"
I don't use any extended characters in the xml document, and even if I
did - I'm puzzled as to why DOM parser would process it without
complaining but the SAX paser would not??
Thanks,
Marina -
Why to use xml ,sax api ,?
Dear friends
1> Can u please tell me why to use xml instead of html. When the developement is
easy & fast in html, then why peoples are going for xml.
2> Please tell me role of SAX api in relevence to XML.
3>What is difference between DOM & SAX.?
If possible spare few seconds to write to me.
regds
shiv
Email: [email protected]1> Can u please tell me why to use xml instead of
html. When the developement is
easy & fast in html, then why peoples are going for
xml.
HTML is only for presentations like web pages. XML, however, is use to define a new language like XHTML that is for presentations. But there are XML based language that is not for presentation, for example, XLink which allows elements to be inserted into XML documents in order to create and describe links between resources. All in all, XML is a much powerful language than HTML.
2> Please tell me role of SAX api in relevence to
XML.
Simplely put, SAX is a XML parser like DOM that is used to process XML data.
3>What is difference between DOM & SAX.?
Take a look at this: http://java.sun.com/webservices/docs/ea2/tutorial/doc/JAXPIntro.html
Hope this help. -
I am using xerces (in jar form) to parse an XML file.
I've now read, after getting this to work, that xerces can use SAX or DOM.
How do I know which one I am using?Actually, I have never used SAX for modifying attributes, but there is a lot of documentation available.
http://java.sun.com/webservices/docs/1.1/tutorial/doc/JAXPSAX.html#wp69937
I think this is a good example:
import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import org.apache.xerces.parsers.SAXParser;
public class Trace extends DefaultHandler {
int indent;
void printIndent() {
for (int i=0; i<indent; i++) System.out.print("-");
public void startDocument() {
System.out.println("start document");
public void endDocument() {
System.out.println("end document");
public void startElement(String uri, String localName,
String qName, Attributes attributes) {
printIndent();
System.out.println("starting element: " + qName);
indent++;
public void endElement(String uri, String localName,
String qName) {
indent--;
printIndent();
System.out.println("end element: " + qName);
public void ignorableWhitespace(char[] ch, int start, int length) {
printIndent();
System.out.println("whitespace, length " + length);
public void processingInstruction(String target, String data) {
printIndent();
System.out.println("processing instruction: " + target);
public void characters(char[] ch, int start, int length){
printIndent();
System.out.println("character data, length " + length);
public static void main(String[] args) {
Trace t = new Trace();
SAXParser p = new SAXParser();
p.setContentHandler(t);
try { p.parse(args[0]); }
catch (Exception e) {e.printStackTrace();}
}
Maybe you are looking for
-
How do i install a version of Java
Hello, I have to make an exercise and they have told us to download the latest version of Java.Although, i have already some versions of Java in my PC. I have in my Program Files a folder named java which contains the following folders : jdk1.5.0_15,
-
Lost id3 tags moving files from mac to external drive
No matter what audio file I move from my desktop to any of my 20 external hhds in finder not itunes the meta data gets lost in the transfer. My music hard drive died and I'm having to copy all my CDs to a new drive, I like to have all my tags set and
-
Error while importing on local files/queries from Sap Portal EP6
Hi, When i try to import a file from sap portal to the local PC, I get a screen with the header "Enter Some File attributes". Text displayed in the screen is "Please wait. You will be forwarded automatically. This page had to be included for technica
-
Hi Experts, a question about Account statement(sapscript)?
Hi Experts, I am working on Account statement, I want to know what is the field for opening balance on the first date of the month, I have a structure(RF140) to use and I found there is final balance(rf140-datu2, rf140-saldo) used in the form, can an
-
I need help!...creating Javadocs
Hi, I am developing an application and wish to create Javadocs from the classes but don't know anything about them. Is it possible to write the command that you use to invoke JavaDoc in a .BAT file and if so, how do I do this?.....I use the JPad edit