White spaces handling by WL DOM parser

hi,
Does anybody has some ideas about how to preserve white spaces if they
appear in the xml data. i tried xml:space='preserve' option but it do not
seems to work. I am using WL DOM parser.
/thanks Tapan

In case anybody is interested here is what I've been able to find...thanks to a little helpful book "XML and Java 2nd Edition" [Maruyama, Tamra, Uramoto, Murata, Clark]
Since I'm using a SAX parser the example doesn't really help. However the book references a DOM parser and uses a "getIsIgnorableWhitespace()" method which as my luck may have it is not available in SAX...
The book goes on to state there are two ways to tell an XML processor or an application if certain whitespace is significant:
1) "Define the significant whitespace in the content models in the DTD"
2) "Specify the xml:space="preserve" attribute in an XML document in order to indicate the intent that applications preservce all whitespace"
Can anybody elaborate on the above, especially #1 or even provide an example that would work with SAX. Thanks...

Similar Messages

  • White space handling dbms_xmlstore.insertxml

    Hi,
    I have a question about white space handling.
    I have a column in table which holds white space character.
    When I loading xml file using dbms_xmlstore.insertxml white space is converted into NULL and inserted into table.
    It would fail if the column type is not null.
    How do I handle it?
    ======================================================
    Alternatively, how do I insert a tag with only whitespace in it into a table?
    <Tag> </Tag> [One whitespace]
    To elaborate the question
    If I have following data in xml file ...
    =============================================
    <Rowset>
    <Row>
    <Tag1> </Tag1>
    <Tag2>1</Tag1>
    </Row>
    </Rowset>
    I have to load this data into
    table tab1...
    create table tab1 (tag1 varchar2(5), tag2 number);
    How do I achieve it using dbms_xmlstore so that I can read the whitespace in XML and load it correctly into the table?
    ========================================================================
    To use an alternate approach, I also tried the following.....
    I tried the following test program on the xml file also shown below....
    XML File is
    <?xml version="1.0"?>
    <ROWSET>
    <ROW>
    <SYS_NAME> a </SYS_NAME>
    <SYS_SERIAL_NUM>000000</SYS_SERIAL_NUM>
    </ROW>
    </ROWSET>
    And small procedure is
    create or replace procedure PRO_TEST
    as
    o_sys_name varchar(10);
    spacetag varchar2(10) := ' ';
    begin
    --execute immediate 'create global temporary table gt_xmltype_tab1 (xmlfile1 xmltype)';
    insert into gt_xmltype_tab(xmlfile1)
    values(XMLType(bfilename('RESTOREDIR','ADTL_SETUP_OPTIONS.xml'),nls_charset_id('AL32UTF8')));
    select extractvalue (value(x), '/ROW/SYS_NAME')
    into o_sys_name
    from gt_xmltype_tab gt, TABLE(XMLSequence(extract(gt.xmlfile1, '/ROWSET/ROW'))) x;
    dbms_output.put_line('[' || o_sys_name || ']');
    dbms_output.put_line('ASCII:- ' || ascii(o_sys_name));
    if o_sys_name = ' ' then
    --if o_sys_name = chr(32) then
    dbms_output.put_line('I found space');
    else
    dbms_output.put_line('I found no space');
    end if;
    commit;
    end;
    When Tag is <sys_nam> </sys_name> I get [] in the output(empty).
    When Tag is <sys_nam> a</sys_name> I get [ a] in the output(space and a).
    When Tag is <sys_nam> a </sys_name> I get [ a ] in the output(space a space).
    When I has some character along with the whitespace, behaviour is correct and as expected.
    But when the tag contains only whitespace the output is empty.
    I cant seem to get around this problem.
    Upon receiving empty string, other sub systems which are reading the data stop working.
    Can someone help here?
    Edited by: userAtoZ on May 14, 2011 2:57 PM

    White space handling dbms_xmlstore.insertxmlYou may replace all whitespaces with its corresponding html entity:
    SQL> create table test (v varchar2 (5))
    Table created.
    SQL> declare
      ctx   sys.dbms_xmlstore.ctxtype := dbms_xmlstore.newcontext ('test');
      doc   xmltype := xmltype(replace('<ROW><V> </V></ROW>',' ', '&#38;#32;'));
      ret   int;
    begin
      ret := dbms_xmlstore.insertxml (ctx, doc);
      dbms_xmlstore.closecontext (ctx);
    end;
    PL/SQL procedure successfully completed.
    SQL> select v, length (v), ascii(v) from test
    V             LENGTH(V)        ASCII(V)
                          1              32
    1 row selected.

  • White spaces in XML element

    Hi...
      I need to put in an XML element the string value "      ", that is six white spaces, but when the XML parser interpets the document this value is transform like a null value.
      Is there some way to preserve this value in the element?

    Thanks for you replay Reddi,
      Let me explain the scenario: The scenario is RFC --> XI  --> JDBC, one of the element of the FM sometimes could be have the value "      ", when this occurrs in the SXMB_MONI TC I see the value null in the element, that is the tag is <Element />, in this case I need to preserve this white space in the element. The message could be something like this:
    <root>
      <element1>value 1</element1>
      <element2>value 2</element2>
      <element3>      </element3>
    </root> 
    but I see the message in this form:
    <root>
      <element1>value 1</element1>
      <element2>value 2</element2>
      <element3 />
    </root>
    In the message mapping tool I assign the string value "      " and the problem still the same.
      Any Idea?

  • How to ignore white space when parse xml document using xerces 2.4.0

    When I run the program with the xml given below the following error comes.
    Problem parsing the file.java.lang.NullPointerExceptionjava.lang.NullPointerExce
    ption
    at SchemaTest.main(SchemaTest.java:25)
    ============================================================
    My expectation is "RECEIPT". Pls send me the solution.
    import org.apache.xerces.parsers.DOMParser;
    import org.xml.sax.InputSource;
    import java.io.*;
    import org.xml.sax.ErrorHandler;
    import org.w3c.dom.*;
    public class SchemaTest {
    public static void main (String args[])
    try
    FileInputStream is = new FileInputStream(new File("C:\\ADL\\imsmanifest.xml"));
    InputSource in = new InputSource(is);
    DOMParser parser = new DOMParser();
    //parser.setFeature("http://xml.org/sax/features/validation", false);
    //parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation", "memory.xsd");
    //ErrorHandler errors = new ErrorHandler();
    //parser.setErrorHandler(errors);
    parser.parse(in);
    Document manifest = parser.getDocument();
    manifest.normalize();
    NodeList nl = manifest.getElementsByTagName("organization");
    System.out.println((((nl.item(0)).getChildNodes()).item(0)).getFirstChild().getNodeValue());
    catch (Exception e)
    System.out.print("Problem parsing the file."+e.toString());
    e.printStackTrace();
    <?xml version = '1.0'?>
    <organizations default="detail">
    <organization identifier="detail" isvisible="true">
    <title>RECEIPT</title>
    <item identifier="S100000" identifierref="R100000" isvisible="true">
    <title>Basic Module</title>
    <item identifier="S100001" identifierref="R100001" isvisible="true">
    <title>Objectives</title>
    <metadata/>
    </item>
    </item>
    <metadata/>
    </organization>
    </organizations>
    Is there a white space problem? How do I get rid from this problem.

    ok now i really wrote the whole code, a bit scrolling in the API is to hard?
                DocumentBuilderFactory dbf = new DocumentBuilderFactory();
                DocumentBuilder db = dbf.newDocumentBuilder();
                dbf.setNamespaceAware(true); //or set false
                Document d = db.parse(inputstream);

  • Problem in parsing white spaces using if_ixml_parser

    Hello People,
    I have a problem in parsing XML file in one of my programs.
    The program uses the method get_value( ) of class if_ixml_node to fetch a value. In the XML file when the value is spaceA, then after parsing, the value fetched is A and not spaceA.
    Is there any way to fetch the white spaces also?
    Here is the sample tag. The value inside the tags is " A" and after parsing I get "A" the blank is ignored.
    <ns1:IndiceCible> A</ns1:IndiceCible>
    DATA : l_node_fils       TYPE REF TO if_ixml_node.
    indice_val = l_node_fils->get_value( ).
    In some XML parsing forums I saw that if we add the option as shown below, then the parsing works properly. But this did not work in my case.
    <ns1:IndiceCible xml:space="preserve"> A</ns1:IndiceCible>
    The input XML file is as follows.
    <?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header><env:Flow xmlns:env="http://xml.inetpsa.com/Structure/Informatique/DeveloppementSI/ReferentielEchange"><env:MessageID>0414
    2636F4888F4B4A579A21E10000000A52931C</env:MessageID><env:From>R3P INTERFACES</env:From><env:To>SAP</env:To><env:TimeStamp>2010-03-04T14:26:36.672+01:00</env:TimeStamp></env:Flow></SOAP-ENV:Header><SOAP-ENV:Body><env:Response xmlns:env="http://xml.inetpsa.
    com/Structure/Informatique/DeveloppementSI/ReferentielEchange"><env:Values><ns1:ListeTranscodifications xmlns:ns1="http://xml.inetpsa.com/ProduitProcess/Produit/Transcodification"><ns1:Transcodification id="1 "><ns1:Statut>KO</ns1:Statut><ns1:Message>ERRO
    R : Indice incorrect</ns1:Message><ns1:ReferenceCible>969099979A</ns1:ReferenceCible><ns1:IndiceCible> A</ns1:IndiceCible><ns1:ColoreCible>SS_TEINTE</ns1:ColoreCible></ns1:Transcodification></ns1:ListeTranscodifications></env:Values><env:Status><env:Code>
    0</env:Code><env:Label></env:Label></env:Status></env:Response></SOAP-ENV:Body></SOAP-ENV:Envelope>
    Regards,
    Praveen

    use IF_XML_PARSER~CL_ADD_PRESERVE_SPACE_ELEMENT method:
    PARAMETERS preserve TYPE flag AS checkbox.
      DATA lo_ixml          TYPE REF TO if_ixml.
      DATA lo_streamfactory TYPE REF TO if_ixml_stream_factory.
      DATA lo_parser        TYPE REF TO if_ixml_parser.
      DATA lo_istream       TYPE REF TO if_ixml_istream.
      DATA lo_document      TYPE REF TO if_ixml_document.
      DATA lo_node          TYPE REF TO if_ixml_node.
      DATA l_node_value          TYPE string.
      lo_ixml = cl_ixml=>create( ).
      lo_streamfactory = lo_ixml->create_stream_factory( ).
      lo_istream = lo_streamfactory->create_istream_string(
            string = '<?xml version="1.0" encoding="iso-8859-1"?><DATA>  WAAA</DATA>' ).
      lo_document = lo_ixml->create_document( ).
      lo_parser = lo_ixml->create_parser( stream_factory = lo_streamfactory
                                          istream        = lo_istream
                                          document       = lo_document ).
    IF preserve = 'X'.
      lo_parser->ADD_PRESERVE_SPACE_ELEMENT( ). "<========= HERE
    ENDIF.
      lo_parser->parse( ).
      lo_node = lo_document->find_from_name( name = 'DATA').
      l_node_value = lo_node->get_value( ).
      ASSERT ( preserve = 'X' AND l_node_value = '  WAAA' )
            OR ( preserve = space AND l_node_value = 'WAAA' ).

  • JmsAdapter DOM Parsing Exception handling

    Hi,
    I'm currently facing a problem with the behaviour of the Jms Adapter.
    Whenever a JMS message is put in the queue and that message is not XML valid, the Jms Adapter (consumer) throw the exception "DOM Parsing Exception in translator Exception".
    That's fine, I understand that the message was not well formed. But what is not fine is that the underlying BPEL is not instanciated : meaning I can't handle the exception properly.
    Is there a way to force the Jms Adapter not to crash on the DOM Parsing for the BPEL to be instanciated (and then being able to handle the exception there) ?
    Or is there a way to handle the error thrown by the Jms Adapter itself ? How ?
    I think I do have a workaround to this if there is no better option (if both above questions cannot be answered) but I would rather not implement it since it will involve some extra steps / complexity.
    > It would be to check the "native format opaque schema" option and then use a java embedded to decode the base64 into a string for eventually parsing it.
    regards,
    mathieu

    Hi Mathieu,
    The messages that error out before being posted to the service infrastructure are referred to as rejected messages. For example, the Oracle File Adapter selects a file having data in CSV format and tries to translate it to XML format (using NXSD). If there is any error in the translation, this message is rejected and are not be posted to the target composite.
    You can create rejection handlers to handle message errors. Message errors include those that occur during translation, correlation ID mismatch and XML parsing after message reception.
    Docs on how to do that are here...
    http://docs.oracle.com/cd/E28280_01/integration.1111/e10231/life_cycle.htm#CIAIICJJ
    Cheers,
    Vlad

  • White spaces are required between publicId and systemId

    Hello,
    I'm new to Java/XML and have been searching the XML forums for a viable answer trying to get around this error
    "White spaces are required between publicId and systemId"
    I'm a little unsure of this, however my understanding of this error is that "whitespace" must exist between my "tag entities". So I have modified my XML document to include white space between entities...below is a snippet of my XML doc
    // Begin snippet...
    <auth>
    <userid>
    12345
    </userid>
    <first>
    first value
    </first>
    <second>
    </second>
    </auth>
    //End snippetBelow is the fragment of code I use to set up and parse the XML parse
          SAXParserFactory spf = SAXParserFactory.newInstance();
          //spf.setNamespaceAware(true);
          SAXParser saxParser = spf.newSAXParser();
          XMLReader parser = saxParser.getXMLReader();
          urlConnection = url.openConnection();
          in = urlConnection.getInputStream();
          ins = new InputSource( in );
          // create a handler
          Handler handler = new Handler();
          handler.setBVSessionData( bvdata );
          // assign the handler to the parser
          parser.setContentHandler(handler);
          parser.parse( ins ); // SAXException is thrown here...what gives??
    //...In addition, I'm able to read the XML file fine if I point the URL to the XML file locally on my PC, however when the XML doc is served by a web server over HTTP, then read by my app, the SAXException is thrown. Any insight or examples is greatly appreciated. Thanks in advance.

    In case anybody is interested here is what I've been able to find...thanks to a little helpful book "XML and Java 2nd Edition" [Maruyama, Tamra, Uramoto, Murata, Clark]
    Since I'm using a SAX parser the example doesn't really help. However the book references a DOM parser and uses a "getIsIgnorableWhitespace()" method which as my luck may have it is not available in SAX...
    The book goes on to state there are two ways to tell an XML processor or an application if certain whitespace is significant:
    1) "Define the significant whitespace in the content models in the DTD"
    2) "Specify the xml:space="preserve" attribute in an XML document in order to indicate the intent that applications preservce all whitespace"
    Can anybody elaborate on the above, especially #1 or even provide an example that would work with SAX. Thanks...

  • Remove white space nodes from jtree

    I am trying to create jtree using XML DOM.
    But I m not able to remove/ignore the white space elements from DOM.
    I am getting output something like this
    for example
    Server
    Text
    node1
    Text
    I want something like this.
    Server
    node1
    I tried all option for removeing the white space
    Here I am posting the source
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.FactoryConfigurationError;
    import javax.xml.parsers.ParserConfigurationException;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    import java.io.File;
    import java.io.IOException;
    import org.w3c.dom.Document;
    import org.w3c.dom.DOMException;
    // Basic GUI components
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTree;
    // GUI components for right-hand side
    import javax.swing.JSplitPane;
    import javax.swing.JEditorPane;
    // GUI support classes
    import java.awt.BorderLayout;
    import java.awt.Dimension;
    import java.awt.Toolkit;
    import java.awt.event.WindowEvent;
    import java.awt.event.WindowAdapter;
    // For creating borders
    import javax.swing.border.EmptyBorder;
    import javax.swing.border.BevelBorder;
    import javax.swing.border.CompoundBorder;
    // For creating a TreeModel
    import javax.swing.tree.*;
    import javax.swing.event.*;
    import java.util.*;
    public class DomEcho02 extends JPanel
    // Global value so it can be ref'd by the tree-adapter
    static Document document;
    static final int windowHeight = 460;
    static final int leftWidth = 300;
    static final int rightWidth = 340;
    static final int windowWidth = leftWidth + rightWidth;
    public DomEcho02()
    // Make a nice border
    EmptyBorder eb = new EmptyBorder(5,5,5,5);
    BevelBorder bb = new BevelBorder(BevelBorder.LOWERED);
    CompoundBorder cb = new CompoundBorder(eb,bb);
    this.setBorder(new CompoundBorder(cb,eb));
    // Set up the tree
    JTree tree = new JTree(new DomToTreeModelAdapter());
    // Iterate over the tree and make nodes visible
    // (Otherwise, the tree shows up fully collapsed)
    //TreePath nodePath = ???;
    // tree.expandPath(nodePath);
    // Build left-side view
    JScrollPane treeView = new JScrollPane(tree);
    treeView.setPreferredSize(
    new Dimension( leftWidth, windowHeight ));
    // Build right-side view
    JEditorPane htmlPane = new JEditorPane("text/html","");
    htmlPane.setEditable(false);
    JScrollPane htmlView = new JScrollPane(htmlPane);
    htmlView.setPreferredSize(
    new Dimension( rightWidth, windowHeight ));
    // Build split-pane view
    JSplitPane splitPane =
    new JSplitPane( JSplitPane.HORIZONTAL_SPLIT,
    treeView,
    htmlView );
    splitPane.setContinuousLayout( true );
    splitPane.setDividerLocation( leftWidth );
    splitPane.setPreferredSize(
    new Dimension( windowWidth + 10, windowHeight+10 ));
    // Add GUI components
    this.setLayout(new BorderLayout());
    this.add("Center", splitPane );
    } // constructor
    public static void main(String argv[])
    if (argv.length != 1) {
    System.err.println("Usage: java DomEcho filename");
    System.exit(1);
    DocumentBuilderFactory factory =
    DocumentBuilderFactory.newInstance();
    //factory.setValidating(true);
    //factory.setNamespaceAware(true);
    try {
    DocumentBuilder builder = factory.newDocumentBuilder();
    document = builder.parse( new File(argv[0]) );
    makeFrame();
    } catch (SAXException sxe) {
    // Error generated during parsing)
    Exception x = sxe;
    if (sxe.getException() != null)
    x = sxe.getException();
    x.printStackTrace();
    } catch (ParserConfigurationException pce) {
    // Parser with specified options can't be built
    pce.printStackTrace();
    } catch (IOException ioe) {
    // I/O error
    ioe.printStackTrace();
    } // main
    public static void makeFrame() {
    // Set up a GUI framework
    JFrame frame = new JFrame("DOM Echo");
    frame.addWindowListener(
    new WindowAdapter() {
    public void windowClosing(WindowEvent e) {System.exit(0);}
    // Set up the tree, the views, and display it all
    final DomEcho02 echoPanel =
    new DomEcho02();
    frame.getContentPane().add("Center", echoPanel );
    frame.pack();
    Dimension screenSize =
    Toolkit.getDefaultToolkit().getScreenSize();
    int w = windowWidth + 10;
    int h = windowHeight + 10;
    frame.setLocation(screenSize.width/3 - w/2,
    screenSize.height/2 - h/2);
    frame.setSize(w, h);
    frame.setVisible(true);
    } // makeFrame
    // An array of names for DOM node-types
    // (Array indexes = nodeType() values.)
    static final String[] typeName = {
    "none",
    "Element",
    "Attr",
    "Text",
    "CDATA",
    "EntityRef",
    "Entity",
    "ProcInstr",
    "Comment",
    "Document",
    "DocType",
    "DocFragment",
    "Notation",
    // This class wraps a DOM node and returns the text we want to
    // display in the tree. It also returns children, index values,
    // and child counts.
    public class AdapterNode
    org.w3c.dom.Node domNode;
    // Construct an Adapter node from a DOM node
    public AdapterNode(org.w3c.dom.Node node) {
    domNode = node;
    // Return a string that identifies this node in the tree
    // *** Refer to table at top of org.w3c.dom.Node ***
    public String toString() {
    String s = typeName[domNode.getNodeType()];
    String nodeName = domNode.getNodeName();
    if (! nodeName.startsWith("#")) {
    s += ": " + nodeName;
    if (domNode.getNodeValue() != null) {
    if (s.startsWith("ProcInstr"))
    s += ", ";
    else
    s += ": ";
    // Trim the value to get rid of NL's at the front
    String t = domNode.getNodeValue().trim();
    int x = t.indexOf("\n");
    if (x >= 0) t = t.substring(0, x);
    s += t;
    return s;
    * Return children, index, and count values
    public int index(AdapterNode child) {
    //System.err.println("Looking for index of " + child);
    int count = childCount();
    for (int i=0; i<count; i++) {
    AdapterNode n = this.child(i);
    if (child.domNode == n.domNode) return i;
    return -1; // Should never get here.
    public AdapterNode child(int searchIndex) {
    //Note: JTree index is zero-based.
    org.w3c.dom.Node node =
    domNode.getChildNodes().item(searchIndex);
    return new AdapterNode(node);
    public int childCount() {
    return domNode.getChildNodes().getLength();
    // This adapter converts the current Document (a DOM) into
    // a JTree model.
    public class DomToTreeModelAdapter
    implements javax.swing.tree.TreeModel
    // Basic TreeModel operations
    public Object getRoot() {
    //System.err.println("Returning root: " +document);
    return new AdapterNode(document);
    public boolean isLeaf(Object aNode) {
    // Determines whether the icon shows up to the left.
    // Return true for any node with no children
    AdapterNode node = (AdapterNode) aNode;
    if (node.childCount() > 0) return false;
    return true;
    public int getChildCount(Object parent) {
    AdapterNode node = (AdapterNode) parent;
    return node.childCount();
    public Object getChild(Object parent, int index) {
    AdapterNode node = (AdapterNode) parent;
    return node.child(index);
    public int getIndexOfChild(Object parent, Object child) {
    AdapterNode node = (AdapterNode) parent;
    return node.index((AdapterNode) child);
    public void valueForPathChanged(TreePath path, Object newValue) {
    // Null. We won't be making changes in the GUI
    // If we did, we would ensure the new value was really new,
    // adjust the model, and then fire a TreeNodesChanged event.
    * Use these methods to add and remove event listeners.
    * (Needed to satisfy TreeModel interface, but not used.)
    private Vector listenerList = new Vector();
    public void addTreeModelListener(TreeModelListener listener) {
    if ( listener != null
    && ! listenerList.contains( listener ) ) {
    listenerList.addElement( listener );
    public void removeTreeModelListener(TreeModelListener listener) {
    if ( listener != null ) {
    listenerList.removeElement( listener );
    // Note: Since XML works with 1.1, this example uses Vector.
    // If coding for 1.2 or later, though, I'd use this instead:
    // private List listenerList = new LinkedList();
    // The operations on the List are then add(), remove() and
    // iteration, via:
    // Iterator it = listenerList.iterator();
    // while ( it.hasNext() ) {
    // TreeModelListener listener = (TreeModelListener) it.next();
    * Invoke these methods to inform listeners of changes.
    * (Not needed for this example.)
    * Methods taken from TreeModelSupport class described at
    * http://java.sun.com/products/jfc/tsc/articles/jtree/index.html
    * That architecture (produced by Tom Santos and Steve Wilson)
    * is more elegant. I just hacked 'em in here so they are
    * immediately at hand.
    public void fireTreeNodesChanged( TreeModelEvent e ) {
    Enumeration listeners = listenerList.elements();
    while ( listeners.hasMoreElements() ) {
    TreeModelListener listener =
    (TreeModelListener) listeners.nextElement();
    listener.treeNodesChanged( e );
    public void fireTreeNodesInserted( TreeModelEvent e ) {
    Enumeration listeners = listenerList.elements();
    while ( listeners.hasMoreElements() ) {
    TreeModelListener listener =
    (TreeModelListener) listeners.nextElement();
    listener.treeNodesInserted( e );
    public void fireTreeNodesRemoved( TreeModelEvent e ) {
    Enumeration listeners = listenerList.elements();
    while ( listeners.hasMoreElements() ) {
    TreeModelListener listener =
    (TreeModelListener) listeners.nextElement();
    listener.treeNodesRemoved( e );
    public void fireTreeStructureChanged( TreeModelEvent e ) {
    Enumeration listeners = listenerList.elements();
    while ( listeners.hasMoreElements() ) {
    TreeModelListener listener =
    (TreeModelListener) listeners.nextElement();
    listener.treeStructureChanged( e );
    }

    DocumentBuilderFactory can be configured to ignore white space.
    http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/DocumentBuilderFactory.html#setIgnoringElementContentWhitespace(boolean)

  • Org.xml.sax.SAXParseException: White spaces are required between publicId

    Hi,
    Im migrating an application from weblogic to tomcat 5.5.23 with java 1.5. application involved PDF generation using xalan.jar for transformation. tht pdf generation part is not working in tomcat. Im getting a "org.xml.sax.SAXParseException: White spaces are required between public-Id and system id" error.
    so i replaced the old xalan.jar with latest one ( xalan 2.7.1 ) still no use. I have also explicitly defined the property "javax.xml.transform.TransformerFactory" to "org.apache.xalan.processor.TransformerFactoryImpl" still getting the same exception.
    plz help
    Thanks in Advance.

    I have had good results using JTidy to parse HTML into a DOM.

  • IE 11 white space problem

    I created  a page with dreamweaver. It renders as intended in firefox but shows unwanted white space in ie 11.
    How do I fix this?
    Here is the page in firefox:
    Here is ie 11 page:
    Please respond to [email protected]
    Here is my code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    <style type="text/css">
    <!--
    body {
    font: 100%/1.4 Verdana, Arial, Helvetica, sans-serif;
    background: #4E5869;
    margin: 0;
    padding: 0;
    color: #000;
    /* ~~ Element/tag selectors ~~ */
    ul, ol, dl { /* Due to variations between browsers, it's best practices to zero padding and margin on lists. For consistency, you can either specify the amounts you want here, or on the list items (LI, DT, DD) they contain. Remember that what you do here will cascade to the .nav list unless you write a more specific selector. */
    padding: 0;
    margin: 0;
    h1, h2, h3, h4, h5, h6, p {
    margin-top: 0;  /* removing the top margin gets around an issue where margins can escape from their containing div. The remaining bottom margin will hold it away from any elements that follow. */
    padding-right: 15px;
    padding-left: 15px; /* adding the padding to the sides of the elements within the divs, instead of the divs themselves, gets rid of any box model math. A nested div with side padding can also be used as an alternate method. */
    font-size: x-small;
    color: #FFF;
    a img { /* this selector removes the default blue border displayed in some browsers around an image when it is surrounded by a link */
    border: none;
    /* ~~ Styling for your site's links must remain in this order - including the group of selectors that create the hover effect. ~~ */
    a:link {
    color:#414958;
    text-decoration: underline; /* unless you style your links to look extremely unique, it's best to provide underlines for quick visual identification */
    a:visited {
    color: #4E5869;
    text-decoration: underline;
    a:hover, a:active, a:focus { /* this group of selectors will give a keyboard navigator the same hover experience as the person using a mouse. */
    text-decoration: none;
    color: #FFFFFF;
    /* ~~ this container surrounds all other divs giving them their percentage-based width ~~ */
    .container {
    width: 80%;
    max-width: 1260px;/* a max-width may be desirable to keep this layout from getting too wide on a large monitor. This keeps line length more readable. IE6 does not respect this declaration. */
    min-width: 780px;/* a min-width may be desirable to keep this layout from getting too narrow. This keeps line length more readable in the side columns. IE6 does not respect this declaration. */
    background: #FFF; /* the auto value on the sides, coupled with the width, centers the layout. It is not needed if you set the .container's width to 100%. */
    height: 80%;
    margin-top: 0;
    margin-right: auto;
    margin-bottom: 0;
    margin-left: auto;
    .container .footer #fMisc div p {
    font-family: Verdana, Geneva, sans-serif;
    font-size: x-small;
    color: #FFF;
    /* ~~ the header is not given a width. It will extend the full width of your layout. It contains an image placeholder that should be replaced with your own linked logo ~~ */
    .header {
    background: #6F7D94;
    /* ~~ These are the columns for the layout. ~~
    1) Padding is only placed on the top and/or bottom of the divs. The elements within these divs have padding on their sides. This saves you from any "box model math". Keep in mind, if you add any side padding or border to the div itself, it will be added to the width you define to create the *total* width. You may also choose to remove the padding on the element in the div and place a second div within it with no width and the padding necessary for your design.
    2) No margin has been given to the columns since they are all floated. If you must add margin, avoid placing it on the side you're floating toward (for example: a right margin on a div set to float right). Many times, padding can be used instead. For divs where this rule must be broken, you should add a "display:inline" declaration to the div's rule to tame a bug where some versions of Internet Explorer double the margin.
    3) Since classes can be used multiple times in a document (and an element can also have multiple classes applied), the columns have been assigned class names instead of IDs. For example, two sidebar divs could be stacked if necessary. These can very easily be changed to IDs if that's your preference, as long as you'll only be using them once per document.
    4) If you prefer your nav on the left instead of the right, simply float these columns the opposite direction (all left instead of all right) and they'll render in reverse order. There's no need to move the divs around in the HTML source.
    .sidebar1 {
    float: right;
    width: 20%;
    padding-bottom: 64px;
    height: 100%;
    font-family: "Comic Sans MS", cursive;
    font-weight: bolder;
    font-size: x-large;
    border-top-width: 0%;
    border-right-width: 0%;
    border-bottom-width: 0%;
    border-left-width: 0%;
    background-color: #93A5C4;
    background-repeat: repeat;
    margin: 0px;
    overflow: hidden;
    .content {
    width: 80%;
    float: right;
    background-image: url(back1.gif);
    background-repeat: repeat;
    background-color: #CCC;
    padding-top: 0px;
    padding-right: 0px;
    padding-bottom: 10px;
    padding-left: 0px;
    height: 100%;
    overflow: hidden;
    /* ~~ This grouped selector gives the lists in the .content area space ~~ */
    .content ul, .content ol {
    padding: 0 15px 15px 40px; /* this padding mirrors the right padding in the headings and paragraph rule above. Padding was placed on the bottom for space between other elements on the lists and on the left to create the indention. These may be adjusted as you wish. */
    /* ~~ The navigation list styles (can be removed if you choose to use a premade flyout menu like Spry) ~~ */
    ul.nav {
    list-style: none; /* this removes the list marker */
    border-top: 1px solid #666; /* this creates the top border for the links - all others are placed using a bottom border on the LI */
    margin-bottom: 15px; /* this creates the space between the navigation on the content below */
    ul.nav li {
    border-bottom: 1px solid #666; /* this creates the button separation */
    ul.nav a, ul.nav a:visited { /* grouping these selectors makes sure that your links retain their button look even after being visited */
    padding: 5px 5px 5px 15px;
    display: block; /* this gives the link block properties causing it to fill the whole LI containing it. This causes the entire area to react to a mouse click. */
    text-decoration: none;
    background: #8090AB;
    color: #000;
    ul.nav a:hover, ul.nav a:active, ul.nav a:focus { /* this changes the background and text color for both mouse and keyboard navigators */
    background: #6F7D94;
    color: #FFF;
    /* ~~ The footer ~~ */
    .footer {
    background: #6F7D94;
    position: relative;/* this gives IE6 hasLayout to properly clear */
    clear: both; /* this clear property forces the .container to understand where the columns end and contain them */
    font-size: xx-small;
    color: #000;
    margin: 0px;
    padding-top: 10px;
    padding-right: 0;
    padding-bottom: 10px;
    padding-left: 0;
    /* ~~ miscellaneous float/clear classes ~~ */
    .fltrt {  /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */
    float: right;
    margin-left: 8px;
    .fltlft { /* this class can be used to float an element left in your page. The floated element must precede the element it should be next to on the page. */
    float: left;
    margin-right: 8px;
    .clearfloat { /* this class can be placed on a <br /> or empty div as the final element following the last floated div (within the #container) if the #footer is removed or taken out of the #container */
    clear:both;
    height:0;
    font-size: 1px;
    line-height: 0px;
    a {
    color: #FFF;
    .container .footer #fMisc div p a {
    color: #FFF;
    .container .footer div p {
    font-family: Verdana, Geneva, sans-serif;
    font-size: x-small;
    color: #FFF;
    .container .footer div p a {
    color: #FFF;
    p {
    font-size: xx-large;
    p {
    color: #000;
    font-size: x-large;
    .container .footer #fMisc div {
    font-size: x-small;
    .container .footer #fMisc div {
    color: #FFF;
    .container .content h1 {
    font-family: Verdana, Geneva, sans-serif;
    font-size: x-large;
    font-weight: bold;
    color: #000;
    -->
    </style><!--[if lte IE 7]>
    <style>
    .content { margin-right: -1px; } /* this 1px negative margin can be placed on any of the columns in this layout with the same corrective effect. */
    ul.nav a { zoom: 1; }  /* the zoom property gives IE the hasLayout trigger it needs to correct extra whiltespace between the links */
    </style>
    <![endif]-->
    <script src="SpryAssets/SpryMenuBar.js" type="text/javascript"></script>
    <link href="SpryAssets/SpryMenuBarHorizontal.css" rel="stylesheet" type="text/css" />
    </head>
    <body>
    <div class="container">
      <div class="header">
      <img src="Pictures/logo.gif" alt="Logo" name="Insert_logo" width="81" height="63" id="Insert_logo" style="background: #8090AB; display:block;" />
    <!-- end .header --></div>
      <div class="sidebar1">
       <img src="Pictures/back1.jpg" width="72" height="72" /><p> Cliff is an all breed AKC Registered Professional Dog Handler</p>
    <p><img src="Pictures/back1.jpg" width="72" height="72" /></p>
    <p><img src="Pictures/back1.jpg" width="72" height="72" /></p>
    <!-- end .sidebar --></div>
      <div class="content">
       <ul id="MenuBar1" class="MenuBarHorizontal">
         <li><a href="#">Home</a>      </li>
         <li><a href="#" class="MenuBarItemSubmenu">Kennel</a>
           <ul>
             <li><a href="#">Our Facility</a></li>
             <li><a href="#">Rates</a></li>
             <li><a href="#">Pictures</a></li>
           </ul>
         </li>
         <li><a class="MenuBarItemSubmenu" href="#">Show Handling</a>
           <ul>
             <li><a href="#">Info</a></li>
             <li><a href="#">Rates</a></li>
             <li><a href="Schedulefile:///S:/Homepage/calendar.html">Schedule</a></li>
    </ul>
         </li>
         <li><a href="#">Photo Gallery</a></li>
         <li><a href="#">About Me</a></li>
         <li><a href="#">Contact Me</a></li>
       </ul>
       <br />
        <h1 style="margin: 10px; clear: both; text-align:center; font-size: xx-large; font-family: Georgia, 'Times New Roman', Times, serif;">Clifford W. Steele </h1>
       <div style="text-align:center; font-size: xx-large;"> <img src="Pictures/Harley Champion001.jpg" alt="Harley Champion" width="530" height="423" border="0" /></div>
      <!-- end .content --></div>
      <div class="footer">
          <div style="float:right">
            <p> <a href="MAILTO:[email protected]" >Site Designed by Fredric M. Zipser</a><br />
           </p>
        </div>
        <div>
            <p>Clifford W. Steele  Professional Handler <br />
              1395 Rt. 6<br />
              Carmel, NY  10512-1627<br />
              United States<br />
              ph:(845) 225-2463<br />
              Cell:(845) 661-0010<br />
            <a href="MAILTO:[email protected]" >[email protected]</a></p>
        </div>
      <!-- end .footer --></div>
    <!-- end .container --></div>
    </script>
    <script type="text/javascript">
    var MenuBar1 = new Spry.Widget.MenuBar("MenuBar1", {imgDown:"SpryAssets/SpryMenuBarDownHover.gif", imgRight:"SpryAssets/SpryMenuBarRightHover.gif"});
    </script>
    </body>
    </html>

    Give <div class="container"> the same blue background color as your right side bar.
    You'll notice in IE some of the spacing for the rest of your page is slightly larger than in Firefox (browsers do that a lot if you aren't very, very specific about sizes). Because of that, your side bar isn't long enough to fill in the space on that side and the background color of the "container" <div> shows through.

  • How can I maintain multiple white spaces in a PDF written from InDesign?

    I need to have 2 white spaces maintained (within a part #) in the PDF I write, but when I open in Acrobat it converts it to one space.
    I've tried word spaces, set spaces and applying "no color" to a placeholder character and nothing is working!
    Any ideas or suggestions?

    I am talking about normal white space. Multiple fixed widt spaces are not a problem. How the space is handled in a PDF depends on how it is created.
    Viele Grüße
    Wilhelm Georg Adelberger
    Von meinem iPhone gesendet
    Am 21.08.2014 um 12:01 schrieb Peter Spier <[email protected]>:
    How can I maintain multiple white spaces in a PDF written from InDesign?
    created by Peter Spier in InDesign - View the full discussion
    It may not be a great idea to use multiple spaces, but it certainly is not prohibited and sometimes is necessary -- you might want a 2em space, or a thin space before and after a tab you underline in a form.
    I'm able to select the multiple spaces just fine in Acrobat 9 using the text touch-up tool.
    Please note that the Adobe Forums do not accept email attachments. If you want to embed a screen image in your message please visit the thread in the forum to embed the image at https://forums.adobe.com/message/6661037#6661037
    Replies to this message go to everyone subscribed to this thread, not directly to the person who posted the message. To post a reply, either reply to this email or visit the message page:
    To unsubscribe from this thread, please visit the message page at . In the Actions box on the right, click the Stop Email Notifications link.
    Start a new discussion in InDesign by email or at Adobe Community
    For more information about maintaining your forum email notifications please go to http://forums.adobe.com/thread/416458?tstart=0.

  • Context change by DOM parsing Java Mapping in XI

    Hi Team,
    I would like to know that how can I handle Context Change by DOM Parser Java Mapping in XI.?
    Suppose  the source XML structure I have like below:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:Header xmlns:ns0="urn:bp:xi:hr:edm:test:100">
       <FileName>
          <filesub>
             <subname>a</subname>
             <subname>b</subname>
             <subname>c</subname>
          </filesub>
       </FileName>
       <FileName>
          <filesub>
             <subname>d</subname>
             <subname>e</subname>
             <subname>f</subname>
          </filesub>
       </FileName>
    </ns0:Header>
    Where the field FileName can occur maximum thrice(0...3) but the subname field is (0....unbounded) but in the target source I would like to have as given below:
    <?xml version="1.0" encoding="UTF-8" ?>
    - <MT_Test4 xmlns="urn:bp:xi:hr:edm:test:100">
    - <Header>
      <FileName>a</FileName>
      <FileName1>d</FileName1>
        </Header>
    - <Header>
      <FileName>b</FileName>
      <FileName1>e</FileName1>
       </Header>
    Header>
      <FileName>c</FileName>
      <FileName1>f</FileName1>
       </Header>
    </MT_Test4>
    That means the first value from every context of the source field is forming my first and second value in my target first context.Thensecond value from every context is forming my 1st and 2nd value of my target 2nd context and finally 3rd value of every context is forming my 1st and 2nd value of my target 3rd context.Is this possible to done through DOM parsing or we have to do it by UDF only?

    Hi Atanu,
        In my last post I gave an alogorithm to solve the mapping problem. Here is the complete program for the mapping.
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Map;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import com.sap.aii.mapping.api.StreamTransformation;
    import com.sap.aii.mapping.api.StreamTransformationException;
    public class DOMParser1  implements StreamTransformation{
         public void execute(InputStream in, OutputStream out)
                   throws StreamTransformationException {
              try
                   DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
                   DocumentBuilder builderel=factory.newDocumentBuilder();
                   /input document in form of XML/
                   Document docIn=builderel.parse(in);
                   /document after parsing/
                   Document docOut=builderel.newDocument();
                   TransformerFactory tf=TransformerFactory.newInstance();
                   Transformer transform=tf.newTransformer();
                   Element root,child,child1=null;
                   Node textChild;
                   NodeList l;
                   int i,n1,j,div,k;
                   String s[];
                   root=docOut.createElement("MT_Test4");
                   root.setAttribute("xmlns","urn:bp:xi:hr:edm:test:100");
                   l=docIn.getElementsByTagName("subname");
                   n1=l.getLength();
                   s=new String[n1];
                   for(i=0;i<n1;++i)
                             s<i>=l.item(i).getFirstChild().getNodeValue();
                   l=docIn.getElementsByTagName("filesub");
                   div=l.getLength();
                   j=n1/div;
                   for(i=0,k=0;i<j;++i)
                        child1=docOut.createElement("Header");
                        root.appendChild(child1);
                        child=docOut.createElement("FileName");
                        textChild=docOut.createTextNode(s[k]);
                        child.appendChild(textChild);
                        child1.appendChild(child);
                        child=docOut.createElement("FileName1");
                        textChild=docOut.createTextNode(s [ k + j ]);
                        child.appendChild(textChild);
                        child1.appendChild(child);
                        ++k;
                   docOut.appendChild(root);
                   transform.transform(new DOMSource(docOut), new StreamResult(out));     
              catch(Exception e)
                   e.printStackTrace();
         public void setParameter(Map arg0) {
         public static void main(String[] args) {
              try{
                   DOMParser1 genFormat=new DOMParser1();
                   FileInputStream in=new FileInputStream("C:/Apps/my dw/sdnq/apps.xml");
                   FileOutputStream out=new FileOutputStream("C:/Apps/my dw/sdnq/tgt1.xml");
                   genFormat.execute(in,out);
              catch(Exception e)
                   e.printStackTrace();
    source ->  apps.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:Header xmlns:ns0="urn:bp:xi:hr:edm:test:100">
    - <FileName>
    - <filesub>
      <subname>a</subname>
      <subname>b</subname>
      <subname>c</subname>
      </filesub>
      </FileName>
    - <FileName>
    - <filesub>
      <subname>d</subname>
      <subname>e</subname>
      <subname>f</subname>
      </filesub>
      </FileName>
      </ns0:Header>
    target structure ->  tgt1.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    - <MT_Test4 xmlns="urn:bp:xi:hr:edm:test:100">
    - <Header>
      <FileName>a</FileName>
      <FileName1>d</FileName1>
      </Header>
    - <Header>
      <FileName>b</FileName>
      <FileName1>e</FileName1>
      </Header>
    - <Header>
      <FileName>c</FileName>
      <FileName1>f</FileName1>
      </Header>
      </MT_Test4>
    Hope this helps
    one more thing  in this line "textChild=docOut.createTextNode(s k + j );"   somehow the the third braces one opening  before k and one closing after j is missing for unknown reasons. Please correct it when you actually run this code.
    regards
    Anupam
    Edited by: anupamsap on Mar 7, 2011 12:47 PM

  • Urgent Please Help::File size reduced after Dom Parsing

    CODE
    public class Domtest {
    public static void main(String[] args) {
         String resDir = "c:\\res\\";
         Document doc = null;
         try{
         File docFileIn =new File("c:\\test\\test3.jdf");
         DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
         dbf.setIgnoringElementContentWhitespace(true);
         DocumentBuilder db = dbf.newDocumentBuilder();
         doc = db.parse(docFileIn);
         TransformerFactory transformerFactory = TransformerFactory.newInstance();
         Transformer transformer = transformerFactory.newTransformer();
         transformer.transform( new DOMSource(doc ),
         new StreamResult( new FileOutputStream(
         resDir+"response123.jdf") ) );
         catch(Exception e){}
    1.file3.jdf is 35 kb
    2.response123.jdf is 32 kb
    File size is reduced .
    thanks in advance.

    Thanks very much
    That was the reason .
    I have noticed many white spaces in the file and ignore white spaces worked.

  • Parsing xml using DOM parser in java

    hi there!!!
    i don have much idea about parsing xml.. i have an xml file which consists of details regarding indentation and spacing standards of C lang.. i need to read the file using DOM parser in java n store each of the attributes n elements in some data structure in java..
    need help as soon as possible!!!

    DOM is the easiest way to parse XML document, google for JDOM example it is very easy to implement.
    you need to know what is attribute, what is text content and what is Value in XML then easily you can parse your document with dom (watch for space[text#] in your XML document when you parse it).
    you get root node then nodelist of childs for root then go further inside, it is easy believe me.

  • Firefox 3 cannot download files with white space in the filename

    When opening attachments in e-mail Firefox is unable to handle files with white space in the name. This is not the same as the white space file name truncation problem documented on this site (where file names with white space are truncated on saving.) The issue is that the browser will prompt to allow the file to be saved, but it will not prompt to open the file as an option. If I rename the file to remove white space then I do receive the "Open with..." dialog box. I verified that Firefox 2 did not have this problem and I can open attachments with white space in the file names just fine using that version of the browser (2.0.0.20).
    == This happened ==
    Every time Firefox opened
    == Upgraded to version 3

    When a user clicks on an attachment with spaces, the filename is truncated to the first whitespace. While IE, Chrome & Safari handle this, Firefox refuses to accept mime headers with unquoted filename parameters. According to Firefox's bugzilla/knowledgebase, Firefox's behavior is the correct behavior and it's a problem with most webservers or web applications. This problem can be easily corrected by surrounding the filename parameter with double quotes.
    Eg.
    Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

Maybe you are looking for

  • Logical Standby Database - Materialized Views

    Hi, Are materialized views applied from the primary to the standby? They are not mentioned in the 9i documentation as being excluded, but I cannot get a simple one to apply. The standby database log file claims that it is running the DDL, but I do no

  • Small problem in sending chinese charaters using file adapter

    Hi, Actual scenario is, Sender system -> file adapter -> XI -> ABAP Proxy -> Receiver system. error is occured when the data reached the XI.                                                                                 1. The data file contains Chi

  • Changing log file sizes

    is it possible to change je.properties : je.log.fileMax size and restart the db without having to dump and load it? i.e. is it okay to have different size log files in one environment?

  • Multiple choise question, limit number of options

    Hi, we have a multiple choise question with 10 possible answers. 5 is correct, and 5 is not. How can I limit so the user only can check 5 answers? Right now, the user can check all 10 and get full score. Im using Captivate 8. Kind regards, Pontus

  • Multithreaded write support in Master

    1. We have an design where in we write synchronously at the master level. Since it is bottleneck to usesynchronous write in a multithreaded environment. We have removed the synchronous write, which lead to too many DB_LOCK_NOTGRANTED Exception at mas