XML : TransformerConfigurationException

hi all,
When ever I execute following servlet I get following Exception
javax.xml.transform.TransformerConfigurationException : NameSpace not supported by SAXParser
same code will execute OK from command line as an application.
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.xerces.parsers.DOMParser;
import java.io.*;
public class TransformProduct extends HttpServlet {
public void doGet (HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
String XMLSource = "C:/xml_java/basic/products.xml";
String XSLSource = "C:/xml_java/basic/product.xsl";
response.setContentType("text/html");
PrintWriter output = response.getWriter();
try{
TransformerFactory transformerFactory =
TransformerFactory.newInstance();
FileReader reader = new FileReader(XSLSource);
//Following line generate the Exception
Transformer transformer = transformerFactory.newTransformer(
new StreamSource(reader));
DOMParser parser = new DOMParser();
parser.parse(XMLSource);
Document document = parser.getDocument();
catch(javax.xml.transform.TransformerConfigurationException tce)
errString = "tce "+tce.getMessage();
catch(Exception e)
errString = "e "+e.getMessage();
e.printStackTrace();
System.out.println(errString);
}//doGet Ends
}//Class Ends
Here is the CLASSPATH settings:
SET CLASSPATH=.;c:\xalan\bin\xerces.jar;c:\xalan\bin\xalan.jar;
SET CLASSPATH=%CLASSPATH%;c:\tomcat\lib\webserver.jar;c:\tomcat\lib\jasper.jar;
SET CLASSPATH=%CLASSPATH%;c:\tomcat\lib\xml.jar;c:\tomcat\lib\servlet.jar;c:tomcat\lib\tools.jar;
I am using xalan-j_2_0_1
Any help will be great !!!
Cheers,
SUNIL

HI.
I've gotten that exception before. I wasn't using a servlet at the time...and I really don't know why it runs fine from the command line, but to get rid of the exception, I changed some element names inside the xml file. This might be a pain cause you might have to reconfigure your parser.

Similar Messages

  • Javax.xml.transform.TransformerConfigurationException

    Hi,
    I am deploying a bpel process and a bpel test to a remote oc4j, then running the tests via an ant build script.
    The tests are run fine and the results are created in an xml file, however the bpeltest task then try's to convert the xml to a junit report xml format and throws an exception when it can't find bpeltest-junit.xsl.
    The exception is vague and I don't know if its because it can't find the xls file our one of its dependancies.
    exception,
    [bpeltest] ERROR: 'File "" not found.'
    [bpeltest] FATAL ERROR: 'Could not compile stylesheet'
    [bpeltest] javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet
    [bpeltest] at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:824)
    [bpeltest] at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:619)
    [bpeltest] at com.collaxa.cube.ant.taskdefs.BpelTest.doXForm(BpelTest.java:615)
    [bpeltest] at com.collaxa.cube.ant.taskdefs.BpelTest.createJUnitReport(BpelTest.java:685)
    [bpeltest] at com.collaxa.cube.ant.taskdefs.BpelTest.createReport(BpelTest.java:877)
    [bpeltest] at com.collaxa.cube.ant.taskdefs.BpelTest.execute(BpelTest.java:1033)
    [bpeltest] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    [bpeltest] at org.apache.tools.ant.Task.perform(Task.java:364)
    [bpeltest] at org.apache.tools.ant.Target.execute(Target.java:341)
    [bpeltest] at org.apache.tools.ant.Target.performTasks(Target.java:369)
    [bpeltest] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
    [bpeltest] at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
    [bpeltest] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
    [bpeltest] at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
    [bpeltest] at org.apache.tools.ant.Main.runBuild(Main.java:668)
    [bpeltest] at org.apache.tools.ant.Main.startAnt(Main.java:187)
    [bpeltest] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
    [bpeltest] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
    My ant script invokes the test as follows,
    <bpeltest
         user="oc4jadmin"
                        password="babylon5"
         hostname="wells175732.int.rdel.co.uk"
                        httpport="80"
         domain="default"
                        process="AmazonFlow"
         rev="${rev}"
                        name="AmazonFlowTests"
         timeout="${bpeltest.timeout}"
         numWorkers="${bpeltest.numWorkers}"
         minCoverage="${bpeltest.minCoverage}"
         callHandler="${bpeltest.callHandler}"
         context="${bpel.context.properties}"
         resultsDir="${basedir}/bpel_test_results"
         resultsPropertyFile="${basedir}/bpel_test_results/AmazonFlow.properties"
                        failonerror="false"
         verbose="false"/>
    the top of my build script imports the following dependancies,
    <property file="${basedir}/conf/ant-oracle.properties"/>
    <property name="bpel.home" value="${oracle.home}/bpel"/>
    <import file="${bpel.home}/utilities/ant-orabpel.xml"/>
    <import file="${basedir}/conf/ant-oracle.xml"/>
    <property file="${bpel.home}/utilities/ant-orabpel.properties"/>
    <property file="${bpel.home}/utilities/bpel_build_template.properties"/>
    ant-oracle.xml conatins all necessary jar files including the orabpel-ant.jar where the bpeltest-junit.xsl resides under com\collaxa\cube\ant
    In the bpelTest ant task their is an attribute callHandler="${bpeltest.callHandler}"
    this property value is defined in the bpel_build_template.properties file but is empty,
    bpeltest.callHandler =
    I tried changing this to
    bpeltest.callHandler = com.collaxa.cube.ant.taskdefs.BpelTest
    and build script threw the following exception,
    [bpeltest] java.lang.ClassCastException: com.collaxa.cube.ant.taskdefs.BpelTest
    [bpeltest] at com.collaxa.cube.ant.taskdefs.BpelTest.loadHandler(BpelTest.java:425)
    [bpeltest] at com.collaxa.cube.ant.taskdefs.BpelTest.runTestsOverRMI(BpelTest.java:544)
    [bpeltest] at com.collaxa.cube.ant.taskdefs.BpelTest.runTests(BpelTest.java:603)
    [bpeltest] at com.collaxa.cube.ant.taskdefs.BpelTest.execute(BpelTest.java:1024)
    [bpeltest] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
    [bpeltest] at org.apache.tools.ant.Task.perform(Task.java:364)
    [bpeltest] at org.apache.tools.ant.Target.execute(Target.java:341)
    [bpeltest] at org.apache.tools.ant.Target.performTasks(Target.java:369)
    [bpeltest] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
    [bpeltest] at org.apache.tools.ant.Project.executeTarget(Project.java:1185)
    [bpeltest] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
    [bpeltest] at org.apache.tools.ant.Project.executeTargets(Project.java:1068)
    [bpeltest] at org.apache.tools.ant.Main.runBuild(Main.java:668)
    [bpeltest] at org.apache.tools.ant.Main.startAnt(Main.java:187)
    [bpeltest] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246)
    [bpeltest] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67)
    the xsl file looks as follows,
    <?xml version="1.0" encoding="UTF-8" ?>
    <?oracle-xsl-mapper
    <!-- SPECIFICATION OF MAP SOURCES AND TARGETS, DO NOT MODIFY. -->
    <mapSources>
    <source type="XSD">
    <schema location="UTResult.xsd"/>
    <rootElement name="testRunResults" namespace="http://xmlns.oracle.com/bpel/unittest"/>
    </source>
    </mapSources>
    <mapTargets>
    <target type="XSD">
    <schema location="JUnit.xsd"/>
    <rootElement name="testsuites" namespace=""/>
    </target>
    </mapTargets>
    <!-- GENERATED BY ORACLE XSL MAPPER 10.1.2.0.0(build 050412) AT [SUN APR 17 02:06:34 PDT 2005]. -->
    ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ns0="http://xmlns.oracle.com/bpel/bpeltest"
    xmlns:utd="http://xmlns.oracle.com/bpel/instancedriver"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
    xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:ora="http://schemas.oracle.com/xpath/extension"
    xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
    xmlns:java="http://xml.apache.org/xslt/java"
    exclude-result-prefixes="xsl ns0 utd xsd ldap xp20 bpws ora orcl">
    <xsl:param name="minCodeCoverage">0</xsl:param>
    <xsl:param name="minPartnerCodeCoverage">0</xsl:param>
    <xsl:param name="packageFormat"/>
    <xsl:template match="/">
    <testsuites>
    <xsl:for-each select="/ns0:testRunResults/ns0:testSuite">
    <testsuite>
    <xsl:attribute name="name">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getQualifiedSuite($packageFormat, ../@domain, ../@processName, ../@processRevision, @name)" />
    </xsl:attribute>
    <xsl:attribute name="failures">
    <xsl:value-of select="@numFailures"/>
    </xsl:attribute>
    <xsl:attribute name="time">
    <xsl:value-of select="@durationInSeconds"/>
    </xsl:attribute>
    <xsl:attribute name="tests">
    <xsl:value-of select="@numTests"/>
    </xsl:attribute>
    <xsl:attribute name="errors">
    <xsl:value-of select="0"/>
    </xsl:attribute>
    <properties>
    <xsl:for-each select="../ns0:properties/ns0:property">
    <property>
    <xsl:attribute name="name">
    <xsl:value-of select="@name"/>
    </xsl:attribute>
    <xsl:attribute name="value">
    <xsl:value-of select="@value"/>
    </xsl:attribute>
    </property>
    </xsl:for-each>
    <property>
    <xsl:attribute name="name">
    <xsl:value-of select="'run.start.date'"/>
    </xsl:attribute>
    <xsl:attribute name="value">
    <xsl:value-of select="../@startDate"/>
    </xsl:attribute>
    </property>
    <property>
    <xsl:attribute name="name">
    <xsl:value-of select="'run.end.date'"/>
    </xsl:attribute>
    <xsl:attribute name="value">
    <xsl:value-of select="../@endDate"/>
    </xsl:attribute>
    </property>
    <property>
    <xsl:attribute name="name">
    <xsl:value-of select="'suite.start.date'"/>
    </xsl:attribute>
    <xsl:attribute name="value">
    <xsl:value-of select="@startDate"/>
    </xsl:attribute>
    </property>
    <property>
    <xsl:attribute name="name">
    <xsl:value-of select="'suite.end.date'"/>
    </xsl:attribute>
    <xsl:attribute name="value">
    <xsl:value-of select="@endDate"/>
    </xsl:attribute>
    </property>
    </properties>
    <xsl:for-each select=".//ns0:testResult">
    <testcase>
    <xsl:attribute name="name">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.testToClass(@testName)"/>
    </xsl:attribute>
    <xsl:attribute name="time">
    <xsl:value-of select="@durationInSeconds"/>
    </xsl:attribute>
    <xsl:attribute name="classname">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.testToQualifiedClass($packageFormat, @domain, @processName, @processRevision, @testName)"/>
    </xsl:attribute>
    <xsl:for-each select=".//ns0:executionError">
    <failure>
    <xsl:attribute name="type">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getExecutionErrorTitle()"/>
    </xsl:attribute>
    <xsl:attribute name="message">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getExecutionErrorMessage(.)"/>
    </xsl:attribute>
    </failure>
    </xsl:for-each>
    <xsl:for-each select=".//ns0:xmlAssertion">
    <xsl:if test="(@passed = &quot;false&quot;) or (@wasExecuted = &quot;false&quot;)">
    <failure>
    <xsl:attribute name="type">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getFailureType(@wasExecuted, @fatal)"/>
    </xsl:attribute>
    <xsl:attribute name="message">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getXMLFailureMessage(local-name(..), ../@instanceRefID, ../@testName, @wasExecuted, @fatal, utd:message, @activityName, @variableName, @partName, utd:actualPath, @iteration)"/>
    </xsl:attribute>
    </failure>
    <xsl:for-each select="ns0:xmlDiff">
    <failure>
    <xsl:attribute name="type">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getXMLDiffType()"/>
    </xsl:attribute>
    <xsl:attribute name="message">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getXMLDiffMessage(.)"/>
    </xsl:attribute>
    </failure>
    </xsl:for-each>
    </xsl:if>
    </xsl:for-each>
    <xsl:for-each select=".//ns0:valueAssertion">
    <xsl:if test="(@passed = &quot;false&quot;) or (@wasExecuted = &quot;false&quot;)">
    <failure>
    <xsl:attribute name="type">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getFailureType(@wasExecuted, @fatal)"/>
    </xsl:attribute>
    <xsl:attribute name="message">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getFailureMessage(local-name(..), ../@instanceRefID, ../@testName, @wasExecuted, @fatal, utd:message, @activityName, @variableName, @partName, utd:actualPath, utd:expected,ns0:actualValue, @iteration)"/>
    </xsl:attribute>
    </failure>
    </xsl:if>
    </xsl:for-each>
    <xsl:for-each select=".//ns0:activityAssertion">
    <xsl:choose>
    <xsl:when test="@passed = &quot;false&quot;">
    <failure>
    <xsl:attribute name="type">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getActivityAssertionTitle()"/>
    </xsl:attribute>
    <xsl:attribute name="message">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getActivityAssertionMessage(local-name(..), ../@instanceRefID, ../@testName, @activityName, ns0:expectedExecutionCount, ns0:actualExecutionCount)"/>
    </xsl:attribute>
    </failure>
    </xsl:when>
    </xsl:choose>
    </xsl:for-each>
    </testcase>
    </xsl:for-each>
    </testsuite>
    </xsl:for-each>
    <!-- *************************
    begin code coverage logic
    ************************* -->
    <xsl:if test="$minCodeCoverage &gt; 0">
    <testsuite>
    <xsl:attribute name="name">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getCoverageSuiteName($packageFormat, ns0:testRunResults/@domain, ns0:testRunResults/@processName, ns0:testRunResults/@processRevision)" />
    </xsl:attribute>
    <xsl:attribute name="failures">
    <!-- count( (if the main process coverage is too low) + (number of sub process's with insufficient coverage) ) -->
    <xsl:value-of select="count(/ns0:testRunResults/ns0:codeCoverage[@processName = /ns0:testRunResults/@processName and @processRevision = /ns0:testRunResults/@processRevision and $minCodeCoverage &gt; @coverage] | /ns0:testRunResults/ns0:codeCoverage[(@processName != /ns0:testRunResults/@processName or @processRevision != /ns0:testRunResults/@processRevision) and $minPartnerCodeCoverage &gt; @coverage])"/>
    </xsl:attribute>
    <xsl:attribute name="time">
    <xsl:value-of select="'0'"/>
    </xsl:attribute>
    <xsl:attribute name="tests">
    <xsl:choose>
    <xsl:when test="$minPartnerCodeCoverage = 0">
    <xsl:value-of select="1"/>
    </xsl:when>
    <xsl:otherwise>
    <xsl:value-of select="count(/ns0:testRunResults/ns0:codeCoverage)"/>
    </xsl:otherwise>
    </xsl:choose>
    </xsl:attribute>
    <xsl:attribute name="errors">
    <xsl:value-of select="'0'"/>
    </xsl:attribute>
    <properties>
    <xsl:for-each select="/ns0:testRunResults/ns0:properties/ns0:property">
    <property>
    <xsl:attribute name="name">
    <xsl:value-of select="@name"/>
    </xsl:attribute>
    <xsl:attribute name="value">
    <xsl:value-of select="@value"/>
    </xsl:attribute>
    </property>
    </xsl:for-each>
    <property>
    <xsl:attribute name="name">
    <xsl:value-of select="'required.coverage'"/>
    </xsl:attribute>
    <xsl:attribute name="value">
    <xsl:value-of select="$minCodeCoverage"/>
    </xsl:attribute>
    </property>
    <xsl:if test="$minPartnerCodeCoverage &gt; 0">
    <property>
    <xsl:attribute name="name">
    <xsl:value-of select="'required.subprocess.coverage'"/>
    </xsl:attribute>
    <xsl:attribute name="value">
    <xsl:value-of select="$minPartnerCodeCoverage"/>
    </xsl:attribute>
    </property>
    </xsl:if>
    </properties>
    <xsl:for-each select="/ns0:testRunResults/ns0:codeCoverage">
    <xsl:choose>
    <xsl:when test="@processName = /ns0:testRunResults/@processName and @processRevision = /ns0:testRunResults/@processRevision">
    <testcase>
    <xsl:attribute name="name">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getCoverageTestName($packageFormat, @domain, @processName, @processRevision)"/>
    </xsl:attribute>
    <xsl:attribute name="time">
    <xsl:value-of select="'0'"/>
    </xsl:attribute>
    <xsl:attribute name="classname">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.coverageTestToQualifiedClass($packageFormat, @domain, @processName, @processRevision)"/>
    </xsl:attribute>
    <xsl:if test="@coverage &lt; $minCodeCoverage">
    <failure>
    <xsl:attribute name="type">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getCoverageTitle()"/>
    </xsl:attribute>
    <xsl:attribute name="message">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getCoverageMessage($minCodeCoverage, @coverage)"/>
    </xsl:attribute>
    </failure>
    </xsl:if>
    </testcase>
    </xsl:when>
    <xsl:when test="$minPartnerCodeCoverage &gt; 0">
    <testcase>
    <xsl:attribute name="name">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getCoverageTestName($packageFormat, @domain, @processName, @processRevision)"/>
    </xsl:attribute>
    <xsl:attribute name="time">
    <xsl:value-of select="'0'"/>
    </xsl:attribute>
    <xsl:attribute name="classname">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.coverageTestToQualifiedClass($packageFormat, @domain, @processName, @processRevision)"/>
    </xsl:attribute>
    <xsl:if test="@coverage &lt; $minPartnerCodeCoverage">
    <failure>
    <xsl:attribute name="type">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getCoverageTitle()"/>
    </xsl:attribute>
    <xsl:attribute name="message">
    <xsl:value-of select="java:com.collaxa.cube.ant.taskdefs.BpelTest.getCoverageMessage($minPartnerCodeCoverage, @coverage)"/>
    </xsl:attribute>
    </failure>
    </xsl:if>
    </testcase>
    </xsl:when>
    </xsl:choose>
    </xsl:for-each>
    </testsuite>
    </xsl:if>
    </testsuites>
    </xsl:template>
    </xsl:stylesheet>
    the classloader seems to want to make callbacks to the BpelTest methods in order to generate the xml file for junit.
    any help on this would be greatly appreciated,

    I'm having almost the same issue so I was hoping the xalan jars solution would resolve it, but even with the jars copied to the directory and renamed as instructed, the error still occurs when the ant bpeltest task tries to transform the test results into junit format. The error message I'm getting is slightly different but issue seems to be the same. The error message I'm getting is:
    [bpeltest] ERROR: 'null'
    [bpeltest] FATAL ERROR: 'Could not compile stylesheet'
    [bpeltest] javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet
    [bpeltest] at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:824)
    ...etc...
    BUILD FAILED
    C:\projects\jdev_user_home_10g\mywork\BPELTests\BPELTest1\build.xml:179: An error occurred while translating the test results to JUnit results.
    Could not compile stylesheet
    Please verify the XSL:
    bpeltest-junit.xsl
    The original XML results have been saved in... ...etc...
    Using filemon, I can see where the ant javaw.exe process is reading bpeltest-format.xsl but bpeltest-junit.xsl is never read from the file system (although it could be getting loaded via classloader from orabpel-ant.jar as previously mentioned.) Either way, it doesn't seem like bpeltest-junit.xsl is actually missing.
    The error message does not indicate what was null and the references passed to the TransformerFactory are controlled by the bpeltest ant task code so I don't know what's missing.
    Anyone have a clue what might be 'null'? Anyone know how to get it fixed? Anyone have a suggestion for a way to a dig up more context and figure out what's missing?
    -R

  • Is there better way to do this?  (Xml Pretty Print | node removing)

    Hi all, I have been working at home on a small project to help my Java Jedi training. :-)
    My app saves quotes from authors in an xml file.
    I have a class [XmlRepository extends Thread] that holds control of an xml file to handle requests for Nodes.
    When I remove a node I get a Line Space above the node that was removed, or better put my node gets replaced by a empty line.
    Pretty print or correct Node removing.
    part of my xml is like this (I have resumed it for readability):
        <entities forUser="ffffffff-ffff-ffff-ffff-ffffffffffff">
            <quotes/>
            <authors>
                <author id="f156c570-c676-4d69-9b15-ae7d859ff771" languageCode="en" regenerateAs="com.fdt.cognoscere.entities.sources.Author">
                    <lastNames>Poe</lastNames>
                    <firstNames>Edgar Allan</firstNames>
                </author>
                <author id="35dc0c5a-3813-4a10-af49-8d4ea1c2cee0" languageCode="en" regenerateAs="com.fdt.cognoscere.entities.sources.Author">
                    <lastNames>Wilde</lastNames>
                    <firstNames>Oscar</firstNames>
                </author>
                <author id="317f72ea-add6-4bd2-8c63-d8b373a830ab" languageCode="en" regenerateAs="com.fdt.cognoscere.entities.sources.Author">
                    <lastNames>Christie</lastNames>
                    <firstNames>Agatha</firstNames>
                </author>
                <author id="28047c89-b647-4c40-b6c7-677feaf2dfda" languageCode="en" regenerateAs="com.fdt.cognoscere.entities.sources.Author">
                    <lastNames>Shakespeare</lastNames>
                    <firstNames>William</firstNames>
                </author>
            </authors>
        </entities>If I remove A Node ( Edgar Allan Poe (1st in this case)) the resulting Xml when saved is like this (I have added the space indentation just as it is outputted by my code):
        <entities forUser="ffffffff-ffff-ffff-ffff-ffffffffffff">
            <quotes/>
                <author id="35dc0c5a-3813-4a10-af49-8d4ea1c2cee0" languageCode="en" regenerateAs="com.fdt.cognoscere.entities.sources.Author">
                    <lastNames>Wilde</lastNames>
                    <firstNames>Oscar</firstNames>
                </author>
                <author id="317f72ea-add6-4bd2-8c63-d8b373a830ab" languageCode="en" regenerateAs="com.fdt.cognoscere.entities.sources.Author">
                    <lastNames>Christie</lastNames>
                    <firstNames>Agatha</firstNames>
                </author>
                <author id="28047c89-b647-4c40-b6c7-677feaf2dfda" languageCode="en" regenerateAs="com.fdt.cognoscere.entities.sources.Author">
                    <lastNames>Shakespeare</lastNames>
                    <firstNames>William</firstNames>
                </author>
            </authors>
        </entities>this is how I initialize the XML DOM Handlers, and the method for removing a Node:
         * Initializes factory instances and member variables.
        private void initialize() {
            //obtain an instance of a documentFactory create a document documentBuilder
            this.documentFactory = DocumentBuilderFactory.newInstance();
            //Configure the documentFactory to be name-space aware and validate trough an xsd file
            this.documentFactory.setNamespaceAware(true);
            this.documentFactory.setValidating(true);
            this.documentFactory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
            try {
                //obtain an instance of an XPathFactory
                this.xpathFactory = XPathFactory.newInstance(XPathFactory.DEFAULT_OBJECT_MODEL_URI);
                //obtain an instance of the xpath evaluator object
                this.xpathEvaluator = this.xpathFactory.newXPath();
                //set namespace mapping configurations
                NamespaceContextMap namespaceMappings = new NamespaceContextMap();
                namespaceMappings.put("xml", "http://www.w3.org/XML/1998/namespace");
                namespaceMappings.put("xmlns", "http://www.w3.org/2000/xmlns/");
                namespaceMappings.put("xsd", "http://www.w3.org/2001/XMLSchema");
                namespaceMappings.put("xsi", "http://www.w3.org/2001/XMLSchema-instance");
                namespaceMappings.put(this.schemaNamespaceMapping, this.schemaNamespace);
                //add mappings
                this.xpathEvaluator.setNamespaceContext(namespaceMappings);
            } catch (XPathFactoryConfigurationException ex) {
                Logger.getLogger(XmlRepository.class.getName()).log(Level.SEVERE, null, ex);
            try {
                //obtain a trasformer factory to save the file
                this.transformerFactory = TransformerFactory.newInstance();
                this.transformerFactory.setAttribute("indent-number", 4);
                //obtain the transforme
                this.transformer = this.transformerFactory.newTransformer();
                //setup transformer
                this.transformer.setOutputProperty(OutputKeys.METHOD, "xml");
                this.transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                this.transformer.setOutputProperty(OutputKeys.MEDIA_TYPE, "text");
                this.transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
            } catch (TransformerConfigurationException tcex) {
                Logger.getLogger(XmlRepository.class.getName()).log(Level.SEVERE, null, tcex);
         * Removes a node by evaluating the XPATH expression.
         * @param xpath A String instance with the XPATH expression representing the element to remove.
         * @throws com.fdt.cognoscere.storage.exceptions.UnableToRemoveException When an exception occurs that prevents the repository to execute the remove statement.
        public void removeNode(final String xpath) throws UnableToRemoveException {
            Node nodeToRemove = null;
            Node parentNode = null;
            //verify xpath
            if (xpath == null)
                throw new IllegalArgumentException("The xpath argument cannot be null.");
            //verify that the repository is loaded
            if (!this.loaded)
                throw new IllegalStateException("The XmlRepository faild to load properly and it is in an invalid state. It cannot perfom any operation.");
            try {
                //get the node to remove out of the xpath expression
                nodeToRemove = this.getNode(xpath);
                //throw an exception if no node was found to remove
                if (nodeToRemove == null)
                    throw new UnableToFindException("The node element trying to be remove does not exist.");
                //obtain the parent node to remove its child
                parentNode = nodeToRemove.getParentNode();
                //remove the node from the parent node
                nodeToRemove = parentNode.removeChild(nodeToRemove);
            } catch.......removed to save space{
            } finally {
                //normalize document
                this.document.normalize();
        }Please tell me if I could do this better,
    thanks,
    f(t)

    franciscodiaztrepat wrote:
    When I remove a node I get a Line Space above the node that was removed, or better put my node gets replaced by a empty line.Replaced? No, there's already a new-line character after the node that was removed. And there was one before that node too. You didn't remove either of those, so after the removal there are two consecutive new-line characters. As you can see.
    And no, trying to pretty-print the XML document won't remove any of those. It might add whitespace to make the document nicely indented, but it won't ever remove whitespace. If you want whitespace removed then you'll have to do it yourself.
    For example, after you remove a node, also remove the node following it if it's a whitespace text node. Or something like that.

  • Oracle.xml.parser.v2.SAXParser error

    I'm reposting this error that I recently received one more time before removing the XML transforms from my Java projects and doing them in .NET.
    Code that was working fine suddenly getting a transform error using JDeveloper.
    Get the following:
    javax.servlet.ServletException: javax.xml.transform.TransformerConfigurationException: XML-22000: (Fatal Error) Error while parsing XSL file (weblogic.xml.jaxp.RegistryXMLReader cannot be cast to oracle.xml.parser.v2.SAXParser).
         at weblogic.servlet.jsp.PageContextImpl.handlePageException(PageContextImpl.java:417)
    Seems that
    <!--
    <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <h1>Project Weekly Hours Worked</h1>
    <table>
    <c:import url="HoursWorked.xml" var="xmlHoursWorked" charEncoding="windows-1252"/>
    <c:import url="./HoursWorked3.xsl" var="xslt" charEncoding="windows-1252"/>
    <x:transform xml="${xmlHoursWorked}" xslt="${xslt}" />
    </table>
    -->
    will not transform XML to HTML via XSL in JSP anymore.
    If I run the XSL i get the HTML results I expected in an HTML test page.
    So I know the XML and XSL is sound.
    XSL and DOM parsing in Java/Oracle was a major pain in the ass in the first place and now this.
    Well I've spent hours going through Oralce/Java documentation on XML, DOM and XSL transforms.
    All that time spent and still so unstable. I don't think I was ever able to really get what I wanted
    which was to transform my XML document to HTML, update via JSP and have the XML document
    be updated and ready to view in a summary page. The XML document changes were never really
    available unless I closed the app and restarted. So all in all a failure of capabilities compared to my
    use of XML in .NET.
    So........
    Me thinks it will be a good idea to take out the transforms and have my JSP use a script to invoke a
    method in a class that extracts it from a message. Just have PL/SQL interface with XML and do the
    transform or serialize thing there.
    I don't want to give up on XML but I'm tired of trying to jam a square peg into a round hole
    with Java and JDeveloper.
    Brian

    We don't support file references ("cv1_0.dtd"). Only url type references
    are supported, of the form:
    @ <!DOCTYPE cv1 SYSTEM "http://www.oracle.com/public/cv1_0.dtd>
    Note that the url should be accessible to the world without the need to authenticate.
    you could put your dtd in the "public" area in your iFS system.
    Thanks,
    Sirisha
    null

  • Oracle XML / XDK has nightmarishly bad performance

    Just wanted to share the results of some testing I've done recently. Thought you would all enjoy this information.
    [JAVA_HOME is JDK1.4.2_04]
    Oracle XML & XSLT Java library (would not run with -Xmx256m, OutOfMemory)
    [xdk_version_10.1.0.3.0_production which comes with JDev 10.1.2]
    $ time java -cp ".;../java;../../../../jdev/jdev1012_base/lib/xmlparserv2.jar" -Xmx512m TraxExamples wayne2
    real 189m9.400s
    user 0m0.010s
    sys 0m0.020s
    Saxon b8-6 Java library
    $ time java -cp ".;../java;../../saxon8.jar" -Xmx256m TraxExamples wayne2
    real 1m23.479s
    user 0m0.010s
    sys 0m0.010s
    Saxon 6-5-4 Java library
    $ time java -cp ".;../java;../../../saxon6-5-4/saxon.jar" -Xmx256m TraxExamples wayne2
    real 1m24.749s
    user 0m0.010s
    sys 0m0.020s
    Sun JDK 1.4.2_04 built-in XML and XSL libraries
    $ time java -cp ".;../java" -Xmx256m TraxExamples wayne2
    real 4m1.253s
    user 0m0.010s
    sys 0m0.020s
    Literally, the only difference is the XML libraries being used for the transformation. Same exact input xml & xslt files and Java code. And the time difference is 1.5min (Saxon) vs 189min (Oracle). Even the Sun JDK libraries are no slouch vs Oracle XDK at just over 4mins.
    We might be doing something in our XSLT that is particularly "bad" for Oracle, but I'm not sure of specifics, I just know these results show Oracle to be the wrong choice for our specific transformations and messages.
    (The test file is about 20mb XML and the XSLT is quite simple.)
    I'll try this experiment again when 10.1.3 is final and see if things are improved. For now, I'd advise anyone considering XDK to also evaluate other XSL engines!!

    Sure, here's the code, just modified TraxExamples.java from the Saxonb8-6 release (samples/java/TraxExamples.java) by swapping in my own XML and XSL files instead of the ones that are included with Saxon8.
    * Show the simplest possible transformation from File
    * to a File.
    public static void exampleSimple2(String sourceID, String xslID)
    throws TransformerException, TransformerConfigurationException {
    TransformerFactory tfactory = TransformerFactory.newInstance();
    Transformer transformer =
    tfactory.newTransformer(new StreamSource(xslID));
    System.out.println("TransformerFactory is: " + tfactory.getClass().getName());
    System.out.println("Transformer is: " + transformer.getClass().getName());
    transformer.transform(new StreamSource(sourceID),
    new StreamResult(new File("exampleSimple2.out")));
    I simply added my own call to this method using my own file strings and named it "wayne2" so I could call it directly.
    Then as you can see above, I simply changed the JAR files in my classpath before executing the tests. Otherwise, everything in the various tests is identical.
    I can probably post the XSLT and a sample XML file if there's enough interest. I don't see a simple way to attach a file to a message in this forum...

  • How to Generate XML File from Java Code.

    I want to generate the xml file from the java code.
    Could you plz suggest any webSite address with example?

    Here is the code
    import java.io.File;
    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.TransformerConfigurationException;
    import javax.xml.transform.TransformerException;
    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;
    public class CreateXML {
         private DocumentBuilderFactory factory = null;
         private DocumentBuilder builder = null;
         private Document document = null;
         public CreateXML() {
              try {
                   factory = DocumentBuilderFactory.newInstance();
                   builder = factory.newDocumentBuilder();
                   document = builder.newDocument();
              } catch (FactoryConfigurationError e) {
                   e.printStackTrace();
              } catch (ParserConfigurationException e) {
                   e.printStackTrace();
         /** Creates the document for xml. */
         public Document createDocument(){
              try{               
                   Element root = document.createElement("Root");
                   Element child = document.createElement("child");
                   root.appendChild(child);
                   document.appendChild(root);
              }catch(RuntimeException e){
                   e.printStackTrace();
              return document;
         /** Saves the document as xml. */
         public void saveDocument(Document document){
              try{
                   TransformerFactory transFactory = TransformerFactory.newInstance();
                   Transformer transformer = transFactory.newTransformer();
                   DOMSource source = new DOMSource(document);
                   StreamResult stream = new StreamResult(new File("sample.xml"));
                   transformer.transform(source, stream);
                   System.out.println("XML Created !!");
              }catch(TransformerConfigurationException e){
                   e.printStackTrace();
              } catch (TransformerException e) {
                   e.printStackTrace();
         public static void main(String args[]){
              CreateXML createXML = new CreateXML();
              Document document = createXML.createDocument();
              createXML.saveDocument(document);
    }

  • How to create an XML file from scratch ?

    Hi all,
    I'm afraid that I will seem dummy, but I think I really misunderstand something or I'm trying to do something that is not possible...
    I would like to create a XML file containing the following:<?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="pl.xsl"?>
    <!DOCTYPE playlist SYSTEM "pl.dtd">
    <playlist id="2">
    </playlist>I really need to have both the stylesheet and the DOCTYPE declarations... Does anyone know if this is possible ?
    To create the XML Document, I am using the DocumentBuilder object from javax.xml package (jaxp-1.2-ea2). I think this, at least, is correct.
    To print out the XML document I have tried to use :
    - the Transformer from javax.xml package (jaxp-1.2-ea2) but I could obtain only the DOCTYPE declaration.
    - the Serializer from Xerces parser (version 2.0.1) to print out the Document I am creating with the jaxp, but I was able only to obtain the stylesheet declaration...
    So far I have just understand that there is a difference between Serializer and Transformer (one is serializing, and the other is transforming ;-)), but I couldn't figure out which one would be suitable to produce the XML file above...
    I would really appreciate if one could help me with that ;-)
    Thanks,
    Karau

    Could send me an example ?
    For the moment I am using Transformer in that way:
         TransformerFactory tfactory = TransformerFactory.newInstance();
         try {
             Transformer transformer = tfactory.newTransformer();
             DOMSource source = new DOMSource(playlistDoc.getDocumentElement());
             StreamResult res = new StreamResult(new File(path));
             transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, PL_DTD);
             transformer.setOutputProperty(OutputKeys.INDENT, "yes");
             transformer.transform(source, res);
         catch (TransformerConfigurationException tce) {
             throw tce;
         catch (TransformerException te) {
             throw te;
         }

  • Generate an XML file from a DOM tree

    Hi,
    I'm trying to generate an XML file from a DOM tree that I obtained from another XML file with the Xerces library. I used the following operation :
    public static void writeXmlFile(Document doc, String filename) {
    try {
    Source source = new DOMSource(doc);
    File file = new File(filename);
    Result result = new StreamResult(file);
    Transformer xformer = TransformerFactory.newInstance().newTransformer();
    xformer.transform(source, result);
    } catch (TransformerConfigurationException e) {
    System.err.println(e);
    System.exit(1);
    } catch (TransformerException e) {
    System.err.println(e);
    System.exit(1);
    But I have this Windows/Linux problem. When I execute this on Windows, everything is correct. But if I try on Linux (every distribution does the same thing), I obtain an XML file where everything is written on just ONE LINE : there is neither identation nor carriage return at the end of a line ... And that is pretty annoying 'cause I need to SEE what I generate ...
    Thanks for your answer,
    Blueberryfin.

    Actually I would think that no indents and no new-lines would be more correct, but maybe it's an option for parsers to do it either way if you don't specify it. If you want to specify it, look at this post from last month:
    http://forum.java.sun.com/thread.jsp?forum=34&thread=383400

  • How to create new XML file using retreived XML content by using SAX API?

    hi all,
    * How to create new XML file using retreived XML content by using SAX ?
    * I have tried my level best, but output is coming invalid format, my code is follows,
    XMLFileParser.java class :-
    import java.io.StringReader;
    import java.io.StringWriter;
    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerConfigurationException;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMResult;
    import javax.xml.transform.sax.SAXSource;
    import javax.xml.transform.sax.SAXTransformerFactory;
    import javax.xml.transform.sax.TransformerHandler;
    import javax.xml.transform.stream.StreamResult;
    import org.w3c.dom.Document;
    import org.xml.sax.Attributes;
    import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.XMLFilterImpl;
    public class PdfParser extends XMLFilterImpl {
        private TransformerHandler handler;
        Document meta_data;
        private StringWriter meta_data_text = new StringWriter();
        public void startDocument() throws SAXException {
        void startValidation() throws SAXException {
            StreamResult streamResult = new StreamResult(meta_data_text);
            SAXTransformerFactory factory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
            try
                handler = factory.newTransformerHandler();
                Transformer transformer = handler.getTransformer();
                transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
                transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                handler.setResult(streamResult);
                handler.startDocument();
            catch (TransformerConfigurationException tce)
                System.out.println("Error during the parse :"+ tce.getMessageAndLocation());
            super.startDocument();
        public void startElement(String namespaceURI, String localName,
                String qualifiedName, Attributes atts) throws SAXException {
            handler.startElement(namespaceURI, localName, qualifiedName, atts);
            super.startElement(namespaceURI, localName, qualifiedName, atts);
        public void characters(char[] text, int start, int length)
                throws SAXException {
            handler.characters(text, start, length);
            super.characters(text, start, length);
        public void endElement(String namespaceURI, String localName,
                String qualifiedName) throws SAXException {
            super.endElement("", localName, qualifiedName);
            handler.endElement("", localName, qualifiedName);
        public void endDocument() throws SAXException {
        void endValidation() throws SAXException {
            handler.endDocument();
            try {
                TransformerFactory transfactory = TransformerFactory.newInstance();
                Transformer trans = transfactory.newTransformer();
                SAXSource sax_source = new SAXSource(new InputSource(new StringReader(meta_data_text.toString())));
                DOMResult dom_result = new DOMResult();
                trans.transform(sax_source, dom_result);
                meta_data = (Document) dom_result.getNode();
                System.out.println(meta_data_text);
            catch (TransformerConfigurationException tce) {
                System.out.println("Error occurs during the parse :"+ tce.getMessageAndLocation());
            catch (TransformerException te) {
                System.out.println("Error in result transformation :"+ te.getMessageAndLocation());
    } CreateXMLFile.java class :-
    Sax.startDocument();
    Sax.startValidation();
    Sax.startElement("", "pdf", "pdf", new AttributesImpl());
    Sax.startElement("", "basic-metadata", "basic-metadata", new AttributesImpl());          
    String xmp_str = new String(meta_data.getByteArray(),"UTF8");
    char[] xmp_arr = xmp_str.toCharArray();
    Sax.characters(xmp_arr, 0, xmp_arr.length);
    Sax.endElement("", "pdf", "pdf");
    Sax.endValidation();
    Sax.endDocument();
    Sax.endElement("", "basic-metadata", "basic-metadata");* In CreateXMLFile.java
    class, I have retreived the xml content in the meta_data object, after that i have converted into character array and this will be sends to SAX
    * In this case , the XML file created successfully but the retreived XML content added as an text in between basic-metadata Element, that is, retreived XML content
    is not an XML type text, it just an Normal text Why that ?
    * Please help me what is the problem in my code?
    Cheers,
    JavaImran

    Sax.startDocument();
    Sax.startValidation();
    Sax.startElement("", "pdf", "pdf", new AttributesImpl());
    Sax.startElement("", "basic-metadata", "basic-metadata", new AttributesImpl());          
    String xmp_str = new String(meta_data.getByteArray(),"UTF8");
    char[] xmp_arr = xmp_str.toCharArray();
    Sax.characters(xmp_arr, 0, xmp_arr.length);
    </code><code>Sax.endElement("", "basic-metadata", "basic-metadata");</code>
    <code class="jive-code jive-java">Sax.endElement("", "pdf", "pdf");
    Sax.endValidation();
    Sax.endDocument();     
    * I HAVE CHANGED MY AS PER YOUR SUGGESTION, NOW SAME RESULT HAS COMING.
    * I AM NOT ABLE TO GET THE EXACT OUTPUT.,WHY THAT ?
    Thanks,
    JavaImran{code}

  • Webservices: returning xml document to client

    Can anyone please help me to the following problem.
    1. I have a java bean which i publish as webservice. I want to return an xml document on request from client(for time being my client is normal java client). when i call getDoc() from client i get classload exception. can anyone explain me why?
    public org.w3c.dom.Document getDoc() throws java.rmi.RemoteException {
    Document document = null;
    DocumentBuilderFactory factory =
    DocumentBuilderFactory.newInstance();
    try {
    DocumentBuilder builder = factory.newDocumentBuilder();
    document = builder.parse( new File("C:\\data\\RND\\XmlParser\\XmlParser\\src\\xmlparser\\employer.xml"));
    catch (Exception ex) {
    return document;
    2. if i have to send a xml file to clinet on request using web services(i assume i cant return an document as above), is it feasible(my xml file is a transaction file) to send a xml file as string?
    3. how to transfer a xml file into a string?

    I'm almost sure that the error is because the Document class is not supported by JAX-RPC (see page 384 of the Java Web Services Tutorial).
    Try sending your XML as a String.
    This code may help you to transform between XML and String and viceversa:
    import javax.xml.parsers.*;
    import javax.xml.transform.*;
    import org.xml.sax.*;
    import org.w3c.dom.*;
    public static Document toXmlDocument(String xml) throws IOException, SAXException, ParserConfigurationException
    StringReader reader = new StringReader(xml);
    InputSource source = new InputSource(reader);
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document xmlDoc = builder.parse(source);
    return ( xmlDoc );
    public static String toXmlString(Node node) throws TransformerConfigurationException, TransformerException
    StringWriter writer = new StringWriter();
    DOMSource source = new DOMSource(node);
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer();
    StreamResult result = new StreamResult(writer);
    transformer.transform(source,result);
    return ( writer.toString() );
    }

  • How to add DOCTYPE in XML using jaxp-1.2 ????

    Hi all,
    I know this question has been asked at least 2000 times. But I couldn't find the answer from the previously posted messages.
    I would like to create a new Document (actually a XML document) and to write it out into a file. Of course, to be useful, that document needs a DTD... But I can't find a way to create that DOCTYPE tag.
    In fact, I get this error: org.apache.crimson.tree.DomEx: HIERARCHY_REQUEST_ERR: This node isn't allowed there.
           at org.apache.crimson.tree.XmlDocument.appendChild(XmlDocument.java:661)
           at ServiceManager.PlaylistDOM.createDoc(PlaylistDOM.java:99)
           at ServiceManager.PlaylistDOM.load(PlaylistDOM.java:52)
           at java.lang.Thread.run(Thread.java:536)The code I have is the following:
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    try {
        //create a factory and configure it
        DocumentBuilder builder = factory.newDocumentBuilder();
        playlistDoc = builder.newDocument();
        DOMImplementation impl = builder.getDOMImplementation();
        DocumentType doctype = impl.createDocumentType(ROOT_EL, null, "playlist.dtd");
        playlistDoc = impl.createDocument(null, ROOT_EL, doctype);
    catch (ParserConfigurationException pce) {}
    //create the root of the XML file
    Element root = (Element) playlistDoc.createElement(ROOT_EL);
    root.setAttribute(FRAME_ATTR, fNb);
    playlistDoc.appendChild(root);
    //now print it out into XML file
    TransformerFactory tfactory = TransformerFactory.newInstance();
    try {
        Transformer transformer = tfactory.newTransformer();
        DOMSource source = new DOMSource(playlistDoc.getDocumentElement());
        StreamResult res = new StreamResult(new File(filename));
        transformer.transform(source, res);
    catch (TransformerConfigurationException tce) {}
    catch (TransformerException te) {}Thank you for your help

    add both SYSTEM and PUBLIC, then you will find PUBLIC :P
    ================
    If the doctype-public or doctype-system attributes are specified, then the html output method should output a document type declaration immediately before the first element. The name following <!DOCTYPE should be HTML or html. If the doctype-public attribute is specified, then the output method should output PUBLIC followed by the specified public identifier; if the doctype-system attribute is also specified, it should also output the specified system identifier following the public identifier. If the doctype-system attribute is specified but the doctype-public attribute is not specified, then the output method should output SYSTEM followed by the specified system identifier.
    reference: http://java.sun.com/j2se/1.4.1/docs/api/javax/xml/transform/OutputKeys.html

  • Combine several XML files with same structure

    Hello,
    I have several XML files with the same structure and I want to combine them and create a new XML file to be bale to compare that information easily. It does not look very difficult but as I am very new in this I am not bale to get it
    The structure of my actual files would be something simlar to:
    Root->...-> Name->Address, Telephone
    And what I would like to have si something like
    Root->.... ->Address-> Name 1,Name 2....
    Root -> ...->Telephone-> Name 1, Name 2....
    Does anyone know how to do this.
    Thanks

    You could write a XSL transformation file that does this and transform your input file via
         * Transform XML file with a style sheet.
         * <p><b>Example:</b><p>
    <table align="center" bgcolor="#E0E0E0" border=1 cellpadding="10" cellspacing="0"><tr><td><pre style="margin-top:0; margin-bottom:0">
    XMLTransformer t = new XMLTransformer();
    FileOutputStream fos = new FileOutputStream("C:/Project/result.html");
    String xmlFile = "C:/Project/source.xml";
    String styleSheet = "C:/Project/stylesheet.xsl";
    t.transform(xmlFile, styleSheet, fos);
    </pre></td></tr></table>
         * @param xmlfile The XML file to transform.
         * @param style Stylesheet to use for transformation.
         * @param outputStream OutputStream to write the transformed result to.
        public void transform(String xmlfile, String style, OutputStream outputStream) {
            DocumentBuilderFactory factory =  DocumentBuilderFactory.newInstance();
            //factory.setNamespaceAware(true);
            //factory.setValidating(true);
                //todo: use inputstreams instead of file names
                try {
                    File stylesheet = new File(style);
                    File datafile   = new File(xmlfile);
                    DocumentBuilder builder = factory.newDocumentBuilder();
                    document = builder.parse(datafile);
                    // Use a Transformer for output
                TransformerFactory tFactory = TransformerFactory.newInstance();
                StreamSource stylesource = new StreamSource(stylesheet);
                Transformer transformer = tFactory.newTransformer(stylesource);
                DOMSource source = new DOMSource(document);
                StreamResult sr = new StreamResult(outputStream);
                transformer.transform(source, sr);
            } catch (TransformerConfigurationException tce) {
               // Error generated by the parser
               System.out.println ("\n**XMLTransformerr Factory error");
               System.out.println("   " + tce.getMessage() );
               // Use the contained exception, if any
               Throwable x = tce;
               if (tce.getException() != null) {
                   x = tce.getException();
               x.printStackTrace();
            } catch (TransformerException te) {
               // Error generated by the parser
               System.out.println ("\n** Transformation error");
               System.out.println("   " + te.getMessage() );
               // Use the contained exception, if any
               Throwable x = te;
               if (te.getException() != null) {
                   x = te.getException();
               x.printStackTrace();
             } catch (SAXException sxe) {
               // Error generated by this application
               // (or a parser-initialization error)
               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();
        }//transform()

  • How to parse whole xml elements into a java String

    hello everybody,
    I am trying to parse whole xml into a string for example
    my xml file is as below:
    <root>
        <element>
           <data id="1">1</data>
        </element>
        <element>
           <data id="2">2</data>
        </element>
    </root>
    in java whole data should be transfered as
    String xmlString ="<root><element><data id=\"1\">1</data></element><element><data id=\"2\">2</data></element></root>";or in a simple way can xml be copied into a string? any assistance ...
    thanQ in Advance.
    Han.

    This code is to convert xml document to a string.
                             try {
                                  javax.xml.transform.TransformerFactory tfactory = TransformerFactory.newInstance();
                                  javax.xml.transform.Transformer xform = tfactory.newTransformer();
                                  javax.xml.transform.Source src = new DOMSource(xmlString);
                                  java.io.StringWriter writer = new StringWriter();
                                  StreamResult result = new javax.xml.transform.stream.StreamResult(writer);
                                  xform.transform(src, result);
                                  //System.out.println(writer.toString());          
                             } catch (TransformerConfigurationException e) {
                                  e.printStackTrace();
                             }catch(Exception ex )
                                  ex.printStackTrace();
                             }

  • DOM xml white space in xml element

    Hi there
    Can anyone please help me out with a issue I'm having with altering an xml, and then storing it.
    The thing is, that when I delete all elements under a parent to insert something new there's a big gap when looking at the xml. Like this
    orginal xml fil(as an example):
    <batch>
    <somethingtag> <- Im removing these
    </somethingtag>
    <somethingtag> <- Im removing these
    </somethingtag>
    <somethingtag> <- Im removing these
    </somethingtag>
    <somethingtag> <- Im removing these
    </somethingtag>
    <somethingtag> <- Im removing these
    </somethingtag>
    </batch>
    with code:
              for(int i = 0; i < antallStartTagger ;i++)
                   //System.out.println("Slettet invoicetag nr: " + i);
                   Element startTag = (Element) nodeEn.item(0);                              // Forrige er slettet, s� neste f�rste hele tiden
                   startTag.getParentNode().removeChild(startTag);               
    don't bother the name. The result is:
    <batch>
    <- still space
    </batch>
    and when I insert a new element, it put itself at the far bottom, like this:
    <batch>
    <newtag>
    </newtag>
    <newtag>
    </newtag>
    </batch>
    And for saving the file STILL with gaps I use the Transformer class:
    File xmlOutputFile = new File(filename......);
         FileOutputStream fos = null;
         Transformer transformer = null;
                   fos = new FileOutputStream(xmlOutputFile);
                   // Use a Transformer for output
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
         transformer = transformerFactory.newTransformer();
              DOMSource source = new DOMSource(documentSkjellett);
              StreamResult result = new StreamResult(fos);
              // transform source into result will do save
         transformer.transform(source, result);
         ediLog.append(" -> [" + ediFil + "] lagret");
              catch (FileNotFoundException e)
              {System.out.println("##FEIL## : FileNotFoundException i lagreXMLFil: " + e.getMessage() + " " + e);}
              catch (TransformerConfigurationException e)
              {System.out.println("##FEIL## : TransformerConfigurationException i lagreXMLFil: " + e.getMessage() + " " + e);}
              catch (TransformerException e)
              {System.out.println("##FEIL## : TransformerException i lagreXMLFil: " + e.getMessage() + " " + e);}
    Can anyone advice?
    Paul

    It's because <batch> has two types of children: elements and text nodes.
    Assuming that the text is just whitespace, and you don't care about any text occurring between nodes, first call document.normalize() to aggregate all that text into one big node, then seek out and destroy it.
    Alternately, if you know that there shouldn't be any text directly under <batch>, simply iterate through its child nodes and remove any that are instanceof Text.

  • Remove ?xml version="1.0" encoding="UTF-8"?   from XML doc

    I have generated an XML file using javax XML transformer. In the XML file thats generated I have the version and the encoding line
    <?xml version="1.0" encoding="UTF-8"?>
    which is automatically generated in my XML file. Is there any way that I can avoid that from the XML file thats generated.
    Here is the transformer that I have used.
    public static void printToXML(String fileName){
               try{
                    File file = new File(fileName);
                    Transformer tr = TransformerFactory.newInstance().newTransformer();
                    tr.setOutputProperty(OutputKeys.INDENT, "yes");
                    tr.setOutputProperty(OutputKeys.METHOD,"xml");
                    tr.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "3");
                    tr.transform( new DOMSource(dom),new StreamResult(new FileWriter(file)));
               }catch(TransformerConfigurationException tcex){
                    logger.info("TransformerConfigurationException at printToXML method in CSVtoXML.java");
                    logger.error("TransformerConfigurationException", tcex);
               }catch(TransformerException tex){
                    logger.info("TransformerException at printToXML method in CSVtoXML.java");
                    logger.error("TransformerException", tex);
               }catch(IOException ioex){
                    logger.info("IOException at printToXML method in CSVtoXML.java");
                    logger.error("IOException", ioex);
          }

    Well, it is a pretty important line. Why do you need it removed? Anything that really processes XML knows how to read it and determine what encoding was used. That is vital, if you look at the number of questions posted here about foreign language text in XML. If you really have a text processsor that knows how to open a file called something.xml, and knows how to process or ignore most of the pointy bracket things, but not this one, it is time to fix it.
    Dave Patterson

Maybe you are looking for

  • IMac 27" for Web Designers/Developers?

    Hello, I am considering making a switch from PC to Apple once again. I would like to see some good feedback from web designers/developers on the new 27" iMac. My main concern is screen size and normal font size being too small (after seeing it briefl

  • EEM applet does not support extended ping ?

    Hi does anybody know if EEM applet does not support any extended Ping in a cli action ? This works: action 1000 cli command "ping ip 10.161.255.5" These statements does not work ? action 1000 cli command "ping ip 10.161.255.5 repeat 10 source Loopbac

  • Stop command not working

    I have a flash file that includes a video clip. The first two lines of AS3 code say: movie_1.stop(); movie_1.alpha = 0; movie_1 is the clip. The clip does not play when I preview it in flash (CS3). At least not until it has been triggered to play. Th

  • Transfer documents from on-premise SP 13 to online office 365

    My company has been testing the waters in on-premise SP 2013 and recently thought about saving some money and putting moving over to Office 365.  Our concern is the ease of transferring all documents (1000+), especially nested folders, from on-premis

  • MacbookPro...what is speed when with iLife08 and  Adobe CS3...?

    I will be buying a 17"Macbook Pro next month and I know that it will ship with iLife08. But am also going to be purchasing Adobe CS3. So with all these graphics heavy programs, any thing I should be aware of in terms of speed, specifically if I am ed