Author: kiwiwings
Date: Tue Aug 12 23:33:07 2014
New Revision: 1617624

URL: http://svn.apache.org/r1617624
Log:
sync merge to trunk

Added:
    poi/branches/xml_signature/.settings/org.sonar.ide.eclipse.core.prefs
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/EnvelopedSignatureFacet.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/util/DocumentHelper.java
      - copied unchanged from r1617623, 
poi/trunk/src/ooxml/java/org/apache/poi/util/DocumentHelper.java
    
poi/branches/xml_signature/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestExternalEntities.java
      - copied unchanged from r1617623, 
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/extractor/TestExternalEntities.java
    poi/branches/xml_signature/test-data/document/ExternalEntityInText.docx
      - copied unchanged from r1617623, 
poi/trunk/test-data/document/ExternalEntityInText.docx
Modified:
    poi/branches/xml_signature/   (props changed)
    poi/branches/xml_signature/.classpath
    poi/branches/xml_signature/build.xml
    poi/branches/xml_signature/legal/LICENSE
    poi/branches/xml_signature/legal/NOTICE
    poi/branches/xml_signature/maven/poi-ooxml.pom
    poi/branches/xml_signature/sonar/ooxml/pom.xml
    
poi/branches/xml_signature/src/excelant/java/org/apache/poi/ss/excelant/ExcelAntTask.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/Configuration.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/StreamHelper.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ContentTypeManager.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipContentTypeManager.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/ZipPartMarshaller.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/unmarshallers/PackagePropertiesUnmarshaller.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/HorribleProxies.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
    
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/services/XmlSignatureService.java
    poi/branches/xml_signature/src/ooxml/java/org/apache/poi/util/SAXHelper.java
    
poi/branches/xml_signature/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
    
poi/branches/xml_signature/src/ooxml/testcases/org/apache/poi/poifs/crypt/TestSignatureInfo.java

Propchange: poi/branches/xml_signature/
------------------------------------------------------------------------------
  Merged /poi/trunk:r1617139-1617623
  Merged /poi/branches/xml_signature:r1617376-1617619

Modified: poi/branches/xml_signature/.classpath
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/.classpath?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- poi/branches/xml_signature/.classpath (original)
+++ poi/branches/xml_signature/.classpath Tue Aug 12 23:33:07 2014
@@ -1,30 +1,30 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-       <classpathentry kind="src" path="src/java"/>
-       <classpathentry kind="src" path="src/testcases"/>
-       <classpathentry kind="src" path="src/resources/main"/>
-       <classpathentry kind="src" path="src/ooxml/java"/>
-       <classpathentry kind="src" path="src/ooxml/testcases"/>
-       <classpathentry kind="src" path="src/resources/ooxml"/>
-       <classpathentry kind="src" path="src/scratchpad/src"/>
-       <classpathentry kind="src" path="src/scratchpad/testcases"/>
-       <classpathentry kind="src" path="src/resources/scratchpad"/>
-       <classpathentry kind="src" path="src/contrib/poi-ruby/java"/>
-       <classpathentry kind="src" path="src/examples/src"/>
-       <classpathentry kind="src" path="src/excelant/java"/>
-       <classpathentry kind="src" path="src/excelant/testcases"/>
-       <classpathentry kind="src" path="src/excelant/resources"/>
-       <classpathentry kind="lib" path="lib/ant-1.9.4.jar"/>
-       <classpathentry kind="lib" path="lib/ant-launcher-1.9.4.jar"/>
-       <classpathentry kind="lib" path="lib/commons-codec-1.9.jar"/>
-       <classpathentry kind="lib" path="lib/commons-logging-1.1.3.jar"/>
-       <classpathentry kind="lib" path="lib/log4j-1.2.17.jar"/>
-       <classpathentry kind="lib" path="ooxml-lib/dom4j-1.6.1.jar"/>
-       <classpathentry kind="lib" path="ooxml-lib/xmlbeans-2.6.0.jar"/>
-       <classpathentry kind="lib" path="lib/hamcrest-core-1.3.jar"/>
-       <classpathentry kind="lib" path="lib/junit-4.11.jar"/>
-       <classpathentry kind="lib" path="ooxml-lib/ooxml-schemas-1.1.jar" 
sourcepath="ooxml-lib/ooxml-schemas-src-1.1.jar"/>
-       <classpathentry kind="lib" path="ooxml-lib/ooxml-encryption-1.2.jar" 
sourcepath="ooxml-lib/ooxml-encryption-src-1.2.jar"/>
-       <classpathentry kind="con" 
path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-       <classpathentry kind="output" path="build/eclipse"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="src" path="src/java"/>
+       <classpathentry kind="src" path="src/testcases"/>
+       <classpathentry kind="src" path="src/resources/main"/>
+       <classpathentry kind="src" path="src/ooxml/java"/>
+       <classpathentry kind="src" path="src/ooxml/testcases"/>
+       <classpathentry kind="src" path="src/resources/ooxml"/>
+       <classpathentry kind="src" path="src/scratchpad/src"/>
+       <classpathentry kind="src" path="src/scratchpad/testcases"/>
+       <classpathentry kind="src" path="src/resources/scratchpad"/>
+       <classpathentry kind="src" path="src/contrib/poi-ruby/java"/>
+       <classpathentry kind="src" path="src/examples/src"/>
+       <classpathentry kind="src" path="src/excelant/java"/>
+       <classpathentry kind="src" path="src/excelant/testcases"/>
+       <classpathentry kind="src" path="src/excelant/resources"/>
+       <classpathentry kind="lib" path="lib/ant-1.9.4.jar"/>
+       <classpathentry kind="lib" path="lib/ant-launcher-1.9.4.jar"/>
+       <classpathentry kind="lib" path="lib/commons-codec-1.9.jar"/>
+       <classpathentry kind="lib" path="lib/commons-logging-1.1.3.jar"/>
+       <classpathentry kind="lib" path="lib/log4j-1.2.17.jar"/>
+       <classpathentry kind="lib" path="ooxml-lib/xmlbeans-2.6.0.jar"/>
+       <classpathentry kind="lib" path="lib/hamcrest-core-1.3.jar"/>
+       <classpathentry kind="lib" path="lib/junit-4.11.jar"/>
+       <classpathentry kind="lib" path="ooxml-lib/ooxml-schemas-1.1.jar" 
sourcepath="ooxml-lib/ooxml-schemas-src-1.1.jar"/>
+       <classpathentry kind="lib" path="ooxml-lib/ooxml-encryption-1.2.jar" 
sourcepath="ooxml-lib/ooxml-encryption-src-1.2.jar"/>
+       <classpathentry kind="con" 
path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+       <classpathentry kind="lib" path="lib/mockito-core-1.9.5.jar" 
sourcepath="E:/tmp/mavenRepo/org/mockito/mockito-core/1.9.5/mockito-core-1.9.5-sources.jar"/>
+       <classpathentry kind="output" path="build/eclipse"/>
+</classpath>

Added: poi/branches/xml_signature/.settings/org.sonar.ide.eclipse.core.prefs
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/.settings/org.sonar.ide.eclipse.core.prefs?rev=1617624&view=auto
==============================================================================
--- poi/branches/xml_signature/.settings/org.sonar.ide.eclipse.core.prefs 
(added)
+++ poi/branches/xml_signature/.settings/org.sonar.ide.eclipse.core.prefs Tue 
Aug 12 23:33:07 2014
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+extraProperties=
+lastAnalysisDate=1394235544000
+projectKey=org.apache.poi\:poi-main
+serverUrl=http\://nemo.sonarqube.org
+version=2

Modified: poi/branches/xml_signature/build.xml
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/build.xml?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- poi/branches/xml_signature/build.xml (original)
+++ poi/branches/xml_signature/build.xml Tue Aug 12 23:33:07 2014
@@ -147,8 +147,6 @@ under the License.
     <property name="main.antlauncher.url" 
value="${repository.m2}/maven2/org/apache/ant/ant-launcher/1.9.4/ant-launcher-1.9.4.jar"/>
 
     <!-- jars in the lib-ooxml directory, see the fetch-ooxml-jars target-->
-    <property name="ooxml.dom4j.jar" location="${ooxml.lib}/dom4j-1.6.1.jar"/>
-    <property name="ooxml.dom4j.url" 
value="${repository.m2}/maven2/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar"/>
     <property name="ooxml.xmlbeans23.jar" 
location="${ooxml.lib}/xmlbeans-2.3.0.jar"/>
     <property name="ooxml.xmlbeans23.url"
               
value="${repository.m2}/maven2/org/apache/xmlbeans/xmlbeans/2.3.0/xmlbeans-2.3.0.jar"/>
@@ -233,7 +231,6 @@ under the License.
     </path>
 
     <path id="ooxml.classpath">
-        <pathelement location="${ooxml.dom4j.jar}"/>
         <pathelement location="${ooxml.xmlbeans26.jar}"/>
         <pathelement location="${ooxml.xsds.jar}"/>
         <path refid="main.classpath"/>
@@ -263,7 +260,6 @@ under the License.
     </path>
 
     <path id="ooxml-lite.classpath">
-        <pathelement location="${ooxml.dom4j.jar}"/>
         <pathelement location="${ooxml.xmlbeans26.jar}"/>
         <pathelement location="build/ooxml-xsds-lite"/> <!-- instead of 
ooxml-xsds.jar use the filtered classes-->
         <path refid="main.classpath"/>
@@ -441,7 +437,6 @@ under the License.
         <condition property="ooxml.jars.present">
             <or>
                 <and>
-                    <available file="${ooxml.dom4j.jar}"/>
                     <available file="${ooxml.xmlbeans23.jar}"/>
                     <available file="${ooxml.xmlbeans26.jar}"/>
                     <available file="${ooxml.xsds.jar}"/>
@@ -453,10 +448,6 @@ under the License.
     <target name="fetch-ooxml-jars" depends="check-ooxml-jars" 
unless="ooxml.jars.present">
         <mkdir dir="${ooxml.lib}"/>
         <antcall target="downloadfile">
-            <param name="sourcefile" value="${ooxml.dom4j.url}"/>
-            <param name="destfile" value="${ooxml.dom4j.jar}"/>
-        </antcall>
-        <antcall target="downloadfile">
             <param name="sourcefile" value="${ooxml.xmlbeans23.url}"/>
             <param name="destfile" value="${ooxml.xmlbeans23.jar}"/>
         </antcall>
@@ -1306,7 +1297,6 @@ under the License.
               <include name="log4j-*.jar"/>
             </zipfileset>
             <zipfileset dir="${ooxml.lib}" prefix="${zipdir}/ooxml-lib">
-              <include name="dom4j-*.jar"/>
               <include name="xmlbeans-2.6*.jar"/>
             </zipfileset>
             <zipfileset dir="${dist.dir}" prefix="${zipdir}">
@@ -1334,7 +1324,6 @@ under the License.
               <include name="log4j-*.jar"/>
             </zipfileset>
             <tarfileset dir="${ooxml.lib}" prefix="${zipdir}/ooxml-lib">
-              <include name="dom4j-*.jar"/>
               <include name="xmlbeans-2.6*.jar"/>
             </tarfileset>
             <tarfileset dir="${build.site}" prefix="${zipdir}/docs"/>
@@ -1467,7 +1456,6 @@ under the License.
                        <auxClasspath path="ooxml-lib/ooxml-schemas-1.1.jar" />
                        <auxClasspath path="ooxml-lib/ooxml-encryption-1.2.jar" 
/>
                        <auxClasspath path="ooxml-lib/xmlbeans-2.6.0.jar" />
-                       <auxClasspath path="ooxml-lib/dom4j-1.6.1.jar" />
                        <auxClasspath path="lib/commons-codec-1.9.jar" />
                        <auxClasspath path="lib/commons-logging-1.1.3.jar" />
                        <auxClasspath path="lib/junit-4.11.jar" />

Modified: poi/branches/xml_signature/legal/LICENSE
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/legal/LICENSE?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- poi/branches/xml_signature/legal/LICENSE (original)
+++ poi/branches/xml_signature/legal/LICENSE Tue Aug 12 23:33:07 2014
@@ -229,50 +229,6 @@ Office Open XML schemas (ooxml-schemas-1
     [5] 
http://www.ecma-international.org/publications/files/ECMA-ST/Ecma%20PATENT/Patent%20statements%20ok/ECMA-376%20Adobe%20Patent%20Declaration.pdf
 
 
-DOM4J library (dom4j-1.6.1.jar)
-
-    Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
-
-    Redistribution and use of this software and associated documentation
-    ("Software"), with or without modification, are permitted provided
-    that the following conditions are met:
-
-    1. Redistributions of source code must retain copyright
-       statements and notices.  Redistributions must also contain a
-       copy of this document.
-
-    2. Redistributions in binary form must reproduce the
-       above copyright notice, this list of conditions and the
-       following disclaimer in the documentation and/or other
-       materials provided with the distribution.
-
-    3. The name "DOM4J" must not be used to endorse or promote
-       products derived from this Software without prior written
-       permission of MetaStuff, Ltd.  For written permission,
-       please contact [email protected].
-
-    4. Products derived from this Software may not be called "DOM4J"
-       nor may "DOM4J" appear in their names without prior written
-       permission of MetaStuff, Ltd. DOM4J is a registered
-       trademark of MetaStuff, Ltd.
-
-    5. Due credit should be given to the DOM4J Project - 
-       http://www.dom4j.org
- 
-    THIS SOFTWARE IS PROVIDED BY METASTUFF, LTD. AND CONTRIBUTORS
-    ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
-    NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-    FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
-    METASTUFF, LTD. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-    INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-    (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-    HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-    STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-    ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-    OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
 JUnit test library (junit-4.11.jar)
 
     Common Public License - v 1.0

Modified: poi/branches/xml_signature/legal/NOTICE
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/legal/NOTICE?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- poi/branches/xml_signature/legal/NOTICE (original)
+++ poi/branches/xml_signature/legal/NOTICE Tue Aug 12 23:33:07 2014
@@ -4,9 +4,6 @@ Copyright 2003-2014 The Apache Software 
 This product includes software developed by
 The Apache Software Foundation (http://www.apache.org/).
 
-This product contains the DOM4J library (http://www.dom4j.org).
-Copyright 2001-2005 (C) MetaStuff, Ltd. All Rights Reserved.
-
 This product contains parts that were originally based on software from BEA.
 Copyright (c) 2000-2003, BEA Systems, <http://www.bea.com/>.
 

Modified: poi/branches/xml_signature/maven/poi-ooxml.pom
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/maven/poi-ooxml.pom?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- poi/branches/xml_signature/maven/poi-ooxml.pom (original)
+++ poi/branches/xml_signature/maven/poi-ooxml.pom Tue Aug 12 23:33:07 2014
@@ -69,10 +69,5 @@
       <artifactId>poi-ooxml-schemas</artifactId>
       <version>@VERSION@</version>
     </dependency>
-    <dependency>
-        <groupId>dom4j</groupId>
-        <artifactId>dom4j</artifactId>
-        <version>1.6.1</version>
-    </dependency>
   </dependencies>
 </project>

Modified: poi/branches/xml_signature/sonar/ooxml/pom.xml
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/sonar/ooxml/pom.xml?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- poi/branches/xml_signature/sonar/ooxml/pom.xml (original)
+++ poi/branches/xml_signature/sonar/ooxml/pom.xml Tue Aug 12 23:33:07 2014
@@ -116,12 +116,6 @@
                  <version>2.3.0</version>
                </dependency>        
                
-               <dependency>
-                       <groupId>dom4j</groupId>
-                       <artifactId>dom4j</artifactId>
-                       <version>1.6.1</version>
-               </dependency>
-               
                <!-- non-test dependency for OOXMLLite -->
         <dependency>
             <groupId>junit</groupId>

Modified: 
poi/branches/xml_signature/src/excelant/java/org/apache/poi/ss/excelant/ExcelAntTask.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/excelant/java/org/apache/poi/ss/excelant/ExcelAntTask.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/excelant/java/org/apache/poi/ss/excelant/ExcelAntTask.java
 (original)
+++ 
poi/branches/xml_signature/src/excelant/java/org/apache/poi/ss/excelant/ExcelAntTask.java
 Tue Aug 12 23:33:07 2014
@@ -179,7 +179,7 @@ public class ExcelAntTask extends Task {
             throw new BuildException(
                     "The <classpath> for <excelant> must include poi.jar and 
poi-ooxml.jar " +
                     "if not in Ant's own classpath. Processing .xlsx 
spreadsheets requires " +
-                    "additional poi-ooxml-schemas.jar, xmlbeans.jar and 
dom4j.jar" ,
+                    "additional poi-ooxml-schemas.jar, xmlbeans.jar" ,
                     e, getLocation());
         }
 

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/Configuration.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/Configuration.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/Configuration.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/Configuration.java
 Tue Aug 12 23:33:07 2014
@@ -21,7 +21,7 @@ import java.io.File;
 
 /**
  * Storage class for configuration storage parameters.
- * TODO xml syntax checking is no longer done with DOM4j parser -> remove the 
schema or do it ?
+ * TODO xml syntax checking is not done with JAXP by default -> remove the 
schema or do it ?
  *
  * @author CDubettier, Julen Chable
  * @version 1.0

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/PackageRelationshipCollection.java
 Tue Aug 12 23:33:07 2014
@@ -27,9 +27,10 @@ import org.apache.poi.openxml4j.exceptio
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
 import org.apache.poi.util.SAXHelper;
-import org.dom4j.Attribute;
-import org.dom4j.Document;
-import org.dom4j.Element;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
 
 /**
  * Represents a collection of PackageRelationship elements that are owned by a
@@ -313,22 +314,19 @@ public final class PackageRelationshipCo
             Document xmlRelationshipsDoc = 
SAXHelper.readSAXDocument(relPart.getInputStream());
 
             // Browse default types
-            Element root = xmlRelationshipsDoc.getRootElement();
+            Element root = xmlRelationshipsDoc.getDocumentElement();
 
             // Check OPC compliance M4.1 rule
             boolean fCorePropertiesRelationship = false;
 
-            @SuppressWarnings("unchecked")
-            Iterator<Element> iter = (Iterator<Element>)
-                
root.elementIterator(PackageRelationship.RELATIONSHIP_TAG_NAME);
-            while (iter.hasNext()) {
-                Element element = iter.next();
+            NodeList nodeList = 
root.getElementsByTagName(PackageRelationship.RELATIONSHIP_TAG_NAME);
+            int nodeCount = nodeList.getLength();
+            for (int i = 0; i < nodeCount; i++) {
+                Element element = (Element)nodeList.item(i);
                 // Relationship ID
-                String id = element.attribute(
-                        PackageRelationship.ID_ATTRIBUTE_NAME).getValue();
+                String id = 
element.getAttribute(PackageRelationship.ID_ATTRIBUTE_NAME);
                 // Relationship type
-                String type = element.attribute(
-                        PackageRelationship.TYPE_ATTRIBUTE_NAME).getValue();
+                String type = 
element.getAttribute(PackageRelationship.TYPE_ATTRIBUTE_NAME);
 
                 /* Check OPC Compliance */
                 // Check Rule M4.1
@@ -342,8 +340,7 @@ public final class PackageRelationshipCo
                 /* End OPC Compliance */
 
                 // TargetMode (default value "Internal")
-                Attribute targetModeAttr = element
-                        
.attribute(PackageRelationship.TARGET_MODE_ATTRIBUTE_NAME);
+                Attr targetModeAttr = 
element.getAttributeNode(PackageRelationship.TARGET_MODE_ATTRIBUTE_NAME);
                 TargetMode targetMode = TargetMode.INTERNAL;
                 if (targetModeAttr != null) {
                     targetMode = targetModeAttr.getValue().toLowerCase()
@@ -353,9 +350,7 @@ public final class PackageRelationshipCo
 
                 // Target converted in URI
                 URI target = PackagingURIHelper.toURI("http://invalid.uri";); 
// dummy url
-                String value = element.attribute(
-                        PackageRelationship.TARGET_ATTRIBUTE_NAME)
-                        .getValue();
+                String value = 
element.getAttribute(PackageRelationship.TARGET_ATTRIBUTE_NAME);
                 try {
                     // when parsing of the given uri fails, we can either
                     // ignore this relationship, which leads to 
IllegalStateException

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/StreamHelper.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/StreamHelper.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/StreamHelper.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/StreamHelper.java
 Tue Aug 12 23:33:07 2014
@@ -17,21 +17,36 @@
 
 package org.apache.poi.openxml4j.opc;
 
+import java.io.FilterOutputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 
-import org.dom4j.Document;
-import org.dom4j.io.OutputFormat;
-import org.dom4j.io.XMLWriter;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+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;
 
 public final class StreamHelper {
 
        private StreamHelper() {
                // Do nothing
        }
+  
+  private static final TransformerFactory transformerFactory = 
TransformerFactory.newInstance();
+  
+  private static synchronized Transformer getIdentityTransformer() throws 
TransformerException {
+    return transformerFactory.newTransformer();
+  }
 
        /**
-        * Turning the DOM4j object in the specified output stream.
+        * Save the document object in the specified output stream.
         *
         * @param xmlContent
         *            The XML document.
@@ -40,18 +55,34 @@ public final class StreamHelper {
         * @return <b>true</b> if the xml is successfully written in the stream,
         *         else <b>false</b>.
         */
-       public static boolean saveXmlInStream(Document xmlContent,
-                       OutputStream outStream) {
-               try {
-                       OutputFormat outformat = 
OutputFormat.createPrettyPrint();
-                       outformat.setEncoding("UTF-8");
-                       XMLWriter writer = new XMLWriter(outStream, outformat);
-                       writer.write(xmlContent);
-               } catch (Exception e) {
-                       return false;
-               }
-               return true;
-       }
+    public static boolean saveXmlInStream(Document xmlContent,
+            OutputStream outStream) {
+        try {
+            Transformer trans = getIdentityTransformer();
+            Source xmlSource = new DOMSource(xmlContent);
+            // prevent close of stream by transformer:
+            Result outputTarget = new StreamResult(new FilterOutputStream(
+                    outStream) {
+                @Override
+                public void write(byte b[], int off, int len)
+                        throws IOException {
+                    out.write(b, off, len);
+                }
+
+                @Override
+                public void close() throws IOException {
+                    out.flush(); // only flush, don't close!
+                }
+            });
+            trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
+            trans.setOutputProperty(OutputKeys.INDENT, "yes");
+            trans.setOutputProperty(OutputKeys.STANDALONE, "yes");
+            trans.transform(xmlSource, outputTarget);
+        } catch (TransformerException e) {
+            return false;
+        }
+        return true;
+    }
 
        /**
         * Copy the input stream into the output stream.

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ContentTypeManager.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ContentTypeManager.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ContentTypeManager.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ContentTypeManager.java
 Tue Aug 12 23:33:07 2014
@@ -17,12 +17,11 @@
 
 package org.apache.poi.openxml4j.opc.internal;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map.Entry;
 import java.util.TreeMap;
 
@@ -33,13 +32,12 @@ import org.apache.poi.openxml4j.opc.OPCP
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.PackagePartName;
 import org.apache.poi.openxml4j.opc.PackagingURIHelper;
+import org.apache.poi.util.DocumentHelper;
 import org.apache.poi.util.SAXHelper;
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.dom4j.QName;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
 
 /**
  * Manage package content types ([Content_Types].xml part).
@@ -375,38 +373,33 @@ public abstract class ContentTypeManager
                        Document xmlContentTypetDoc = 
SAXHelper.readSAXDocument(in);
 
                        // Default content types
-                       List defaultTypes = 
xmlContentTypetDoc.getRootElement().elements(
-                                       DEFAULT_TAG_NAME);
-                       Iterator elementIteratorDefault = 
defaultTypes.iterator();
-                       while (elementIteratorDefault.hasNext()) {
-                               Element element = (Element) 
elementIteratorDefault.next();
-                               String extension = 
element.attribute(EXTENSION_ATTRIBUTE_NAME)
-                                               .getValue();
-                               String contentType = element.attribute(
-                                               
CONTENT_TYPE_ATTRIBUTE_NAME).getValue();
+                       NodeList defaultTypes = 
xmlContentTypetDoc.getDocumentElement().getElementsByTagName(DEFAULT_TAG_NAME);
+                       int defaultTypeCount = defaultTypes.getLength();
+                       for (int i = 0; i < defaultTypeCount; i++) {
+                Element element = (Element) defaultTypes.item(i);
+                               String extension = 
element.getAttribute(EXTENSION_ATTRIBUTE_NAME);
+                               String contentType = 
element.getAttribute(CONTENT_TYPE_ATTRIBUTE_NAME);
                                addDefaultContentType(extension, contentType);
                        }
 
                        // Overriden content types
-                       List overrideTypes = 
xmlContentTypetDoc.getRootElement().elements(
-                                       OVERRIDE_TAG_NAME);
-                       Iterator elementIteratorOverride = 
overrideTypes.iterator();
-                       while (elementIteratorOverride.hasNext()) {
-                               Element element = (Element) 
elementIteratorOverride.next();
-                               URI uri = new 
URI(element.attribute(PART_NAME_ATTRIBUTE_NAME)
-                                               .getValue());
-                               PackagePartName partName = PackagingURIHelper
-                                               .createPartName(uri);
-                               String contentType = element.attribute(
-                                               
CONTENT_TYPE_ATTRIBUTE_NAME).getValue();
+            NodeList overrideTypes = 
xmlContentTypetDoc.getDocumentElement().getElementsByTagName(OVERRIDE_TAG_NAME);
+            int overrideTypeCount = overrideTypes.getLength();
+            for (int i = 0; i < overrideTypeCount; i++) {
+                               Element element = (Element) 
overrideTypes.item(i);
+                               URI uri = new 
URI(element.getAttribute(PART_NAME_ATTRIBUTE_NAME));
+                               PackagePartName partName = 
PackagingURIHelper.createPartName(uri);
+                               String contentType = 
element.getAttribute(CONTENT_TYPE_ATTRIBUTE_NAME);
                                addOverrideContentType(partName, contentType);
                        }
                } catch (URISyntaxException urie) {
                        throw new InvalidFormatException(urie.getMessage());
-               } catch (DocumentException e) {
-                       throw new InvalidFormatException(e.getMessage());
-               }
-       }
+        } catch (SAXException e) {
+            throw new InvalidFormatException(e.getMessage());
+        } catch (IOException e) {
+            throw new InvalidFormatException(e.getMessage());
+        }
+    }
 
        /**
         * Save the contents type part.
@@ -420,9 +413,8 @@ public abstract class ContentTypeManager
                Document xmlOutDoc = DocumentHelper.createDocument();
 
                // Building namespace
-               Namespace dfNs = Namespace.get("", TYPES_NAMESPACE_URI);
-               Element typesElem = xmlOutDoc
-                               .addElement(new QName(TYPES_TAG_NAME, dfNs));
+               Element typesElem = 
xmlOutDoc.createElementNS(TYPES_NAMESPACE_URI, TYPES_TAG_NAME);
+        xmlOutDoc.appendChild(typesElem);
 
                // Adding default types
                for (Entry<String, String> entry : 
defaultContentType.entrySet()) {
@@ -453,10 +445,10 @@ public abstract class ContentTypeManager
         */
        private void appendSpecificTypes(Element root,
                        Entry<PackagePartName, String> entry) {
-               root.addElement(OVERRIDE_TAG_NAME).addAttribute(
-                               PART_NAME_ATTRIBUTE_NAME,
-                               entry.getKey().getName()).addAttribute(
-                               CONTENT_TYPE_ATTRIBUTE_NAME, entry.getValue());
+        Element specificType = 
root.getOwnerDocument().createElement(OVERRIDE_TAG_NAME);
+        specificType.setAttribute(PART_NAME_ATTRIBUTE_NAME, 
entry.getKey().getName());
+        specificType.setAttribute(CONTENT_TYPE_ATTRIBUTE_NAME, 
entry.getValue());
+        root.appendChild(specificType);
        }
 
        /**
@@ -469,11 +461,10 @@ public abstract class ContentTypeManager
         * @see #save(java.io.OutputStream)
         */
        private void appendDefaultType(Element root, Entry<String, String> 
entry) {
-               root.addElement(DEFAULT_TAG_NAME).addAttribute(
-                               EXTENSION_ATTRIBUTE_NAME, entry.getKey())
-                               .addAttribute(CONTENT_TYPE_ATTRIBUTE_NAME,
-                                               entry.getValue());
-
+        Element defaultType = 
root.getOwnerDocument().createElement(DEFAULT_TAG_NAME);
+        defaultType.setAttribute(EXTENSION_ATTRIBUTE_NAME, entry.getKey());
+        defaultType.setAttribute(CONTENT_TYPE_ATTRIBUTE_NAME, 
entry.getValue());
+        root.appendChild(defaultType);
        }
 
        /**

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/PackagePropertiesPart.java
 Tue Aug 12 23:33:07 2014
@@ -48,8 +48,6 @@ public final class PackagePropertiesPart
 
        public final static String NAMESPACE_DCTERMS_URI = 
"http://purl.org/dc/terms/";;
 
-       public final static String NAMESPACE_XSI_URI = 
"http://www.w3.org/2001/XMLSchema-instance";;
-
        /**
         * Constructor.
         *

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipContentTypeManager.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipContentTypeManager.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipContentTypeManager.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/ZipContentTypeManager.java
 Tue Aug 12 23:33:07 2014
@@ -17,8 +17,6 @@
 
 package org.apache.poi.openxml4j.opc.internal;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -30,7 +28,7 @@ import org.apache.poi.openxml4j.opc.OPCP
 import org.apache.poi.openxml4j.opc.StreamHelper;
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
-import org.dom4j.Document;
+import org.w3c.dom.Document;
 
 /**
  * Zip implementation of the ContentTypeManager.
@@ -69,17 +67,8 @@ public class ZipContentTypeManager exten
                        // Referenced in ZIP
                        zos.putNextEntry(partEntry);
                        // Saving data in the ZIP file
-                       ByteArrayOutputStream outTemp = new 
ByteArrayOutputStream();
-                       StreamHelper.saveXmlInStream(content, out);
-                       InputStream ins = new 
ByteArrayInputStream(outTemp.toByteArray());
-                       byte[] buff = new 
byte[ZipHelper.READ_WRITE_FILE_BUFFER_SIZE];
-                       while (ins.available() > 0) {
-                               int resultRead = ins.read(buff);
-                               if (resultRead == -1) {
-                                       // end of file reached
-                                       break;
-                               }
-                               zos.write(buff, 0, resultRead);
+                       if (!StreamHelper.saveXmlInStream(content, zos)) {
+                           return false;
                        }
                        zos.closeEntry();
                } catch (IOException ioe) {

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/PackagePropertiesMarshaller.java
 Tue Aug 12 23:33:07 2014
@@ -19,15 +19,18 @@ package org.apache.poi.openxml4j.opc.int
 
 import java.io.OutputStream;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.dom4j.QName;
+import javax.xml.XMLConstants;
+import javax.xml.stream.XMLEventFactory;
+import javax.xml.stream.events.Namespace;
+
 import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.PackagePart;
 import org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart;
 import org.apache.poi.openxml4j.opc.internal.PartMarshaller;
+import org.apache.poi.openxml4j.util.Nullable;
+import org.apache.poi.util.DocumentHelper;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 /**
  * Package properties marshaller.
@@ -36,17 +39,15 @@ import org.apache.poi.openxml4j.opc.inte
  */
 public class PackagePropertiesMarshaller implements PartMarshaller {
 
-       private final static Namespace namespaceDC = new Namespace("dc",
-                       PackagePropertiesPart.NAMESPACE_DC_URI);
-
-       private final static Namespace namespaceCoreProperties = new 
Namespace("",
-                       PackagePropertiesPart.NAMESPACE_CP_URI);
-
-       private final static Namespace namespaceDcTerms = new 
Namespace("dcterms",
-                       PackagePropertiesPart.NAMESPACE_DCTERMS_URI);
-
-       private final static Namespace namespaceXSI = new Namespace("xsi",
-                       PackagePropertiesPart.NAMESPACE_XSI_URI);
+    
+    private final static Namespace namespaceDC, namespaceCoreProperties, 
namespaceDcTerms, namespaceXSI;
+       static {
+           final XMLEventFactory f = XMLEventFactory.newFactory();
+           namespaceDC = f.createNamespace("dc", 
PackagePropertiesPart.NAMESPACE_DC_URI);
+           namespaceCoreProperties = f.createNamespace("cp", 
PackagePropertiesPart.NAMESPACE_CP_URI);
+           namespaceDcTerms = f.createNamespace("dcterms", 
PackagePropertiesPart.NAMESPACE_DCTERMS_URI);
+           namespaceXSI = f.createNamespace("xsi", 
XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI);
+       }
 
        protected static final String KEYWORD_CATEGORY = "category";
 
@@ -98,13 +99,13 @@ public class PackagePropertiesMarshaller
 
                // Configure the document
                xmlDoc = DocumentHelper.createDocument();
-               Element rootElem = xmlDoc.addElement(new QName("coreProperties",
-                               namespaceCoreProperties));
-               rootElem.addNamespace("cp", 
PackagePropertiesPart.NAMESPACE_CP_URI);
-               rootElem.addNamespace("dc", 
PackagePropertiesPart.NAMESPACE_DC_URI);
-               rootElem.addNamespace("dcterms",
-                               PackagePropertiesPart.NAMESPACE_DCTERMS_URI);
-               rootElem.addNamespace("xsi", 
PackagePropertiesPart.NAMESPACE_XSI_URI);
+        Element rootElem = 
xmlDoc.createElementNS(namespaceCoreProperties.getNamespaceURI(),
+                getQName("coreProperties", namespaceCoreProperties));
+        DocumentHelper.addNamespaceDeclaration(rootElem, 
namespaceCoreProperties);
+        DocumentHelper.addNamespaceDeclaration(rootElem, namespaceDC);
+        DocumentHelper.addNamespaceDeclaration(rootElem, namespaceDcTerms);
+        DocumentHelper.addNamespaceDeclaration(rootElem, namespaceXSI);
+        xmlDoc.appendChild(rootElem);
 
                addCategory();
                addContentStatus();
@@ -125,197 +126,110 @@ public class PackagePropertiesMarshaller
                return true;
        }
 
-       /**
+    /**
+     * Sets the given element's text content, creating it if necessary.
+     */
+    private Element setElementTextContent(String localName, Namespace 
namespace, Nullable<String> property) {
+        return setElementTextContent(localName, namespace, property, 
property.getValue());
+    }
+    
+    private String getQName(String localName, Namespace namespace) {
+        return namespace.getPrefix().isEmpty() ? localName : 
namespace.getPrefix() + ':' + localName;
+    }
+
+    private Element setElementTextContent(String localName, Namespace 
namespace, Nullable<?> property, String propertyValue) {
+        if (!property.hasValue())
+            return null;
+
+        Element root = xmlDoc.getDocumentElement();
+        Element elem = (Element) 
root.getElementsByTagNameNS(namespace.getNamespaceURI(), localName).item(0);
+        if (elem == null) {
+            // missing, we add it
+            elem = xmlDoc.createElementNS(namespace.getNamespaceURI(), 
getQName(localName, namespace));
+            root.appendChild(elem);
+        }
+        elem.setTextContent(propertyValue);
+        return elem;
+    }
+
+    private Element setElementTextContent(String localName, Namespace 
namespace, Nullable<?> property, String propertyValue, String xsiType) {
+        Element element = setElementTextContent(localName, namespace, 
property, propertyValue);
+        if (element != null) {
+            element.setAttributeNS(namespaceXSI.getNamespaceURI(), 
getQName("type", namespaceXSI), xsiType);
+        }
+        return element;
+    }
+
+
+    /**
         * Add category property element if needed.
         */
        private void addCategory() {
-               if (!propsPart.getCategoryProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_CATEGORY, 
namespaceCoreProperties));
-               if (elem == null) {
-                       // Missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_CATEGORY, 
namespaceCoreProperties));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getCategoryProperty().getValue());
+        setElementTextContent(KEYWORD_CATEGORY, namespaceCoreProperties, 
propsPart.getCategoryProperty());
        }
 
        /**
         * Add content status property element if needed.
         */
        private void addContentStatus() {
-               if (!propsPart.getContentStatusProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_CONTENT_STATUS, 
namespaceCoreProperties));
-               if (elem == null) {
-                       // Missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_CONTENT_STATUS, 
namespaceCoreProperties));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getContentStatusProperty().getValue());
+        setElementTextContent(KEYWORD_CONTENT_STATUS, namespaceCoreProperties, 
propsPart.getContentStatusProperty());
        }
 
        /**
         * Add content type property element if needed.
         */
        private void addContentType() {
-               if (!propsPart.getContentTypeProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_CONTENT_TYPE, 
namespaceCoreProperties));
-               if (elem == null) {
-                       // Missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_CONTENT_TYPE, 
namespaceCoreProperties));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getContentTypeProperty().getValue());
+        setElementTextContent(KEYWORD_CONTENT_TYPE, namespaceCoreProperties, 
propsPart.getContentTypeProperty());
        }
 
        /**
         * Add created property element if needed.
         */
        private void addCreated() {
-               if (!propsPart.getCreatedProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_CREATED, namespaceDcTerms));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_CREATED, 
namespaceDcTerms));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addAttribute(new QName("type", namespaceXSI), 
"dcterms:W3CDTF");
-               elem.addText(propsPart.getCreatedPropertyString());
+        setElementTextContent(KEYWORD_CREATED, namespaceDcTerms, 
propsPart.getCreatedProperty(),
+                propsPart.getCreatedPropertyString(), "dcterms:W3CDTF");
        }
 
        /**
         * Add creator property element if needed.
         */
        private void addCreator() {
-               if (!propsPart.getCreatorProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_CREATOR, namespaceDC));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_CREATOR, 
namespaceDC));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getCreatorProperty().getValue());
+        setElementTextContent(KEYWORD_CREATOR, namespaceDC, 
propsPart.getCreatorProperty());
        }
 
        /**
         * Add description property element if needed.
         */
        private void addDescription() {
-               if (!propsPart.getDescriptionProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_DESCRIPTION, namespaceDC));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_DESCRIPTION, 
namespaceDC));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getDescriptionProperty().getValue());
+        setElementTextContent(KEYWORD_DESCRIPTION, namespaceDC, 
propsPart.getDescriptionProperty());
        }
 
        /**
         * Add identifier property element if needed.
         */
        private void addIdentifier() {
-               if (!propsPart.getIdentifierProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_IDENTIFIER, namespaceDC));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_IDENTIFIER, 
namespaceDC));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getIdentifierProperty().getValue());
+        setElementTextContent(KEYWORD_IDENTIFIER, namespaceDC, 
propsPart.getIdentifierProperty());
        }
 
-       /**
+    /**
         * Add keywords property element if needed.
         */
        private void addKeywords() {
-               if (!propsPart.getKeywordsProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_KEYWORDS, 
namespaceCoreProperties));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_KEYWORDS, 
namespaceCoreProperties));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getKeywordsProperty().getValue());
+        setElementTextContent(KEYWORD_KEYWORDS, namespaceCoreProperties, 
propsPart.getKeywordsProperty());
        }
 
        /**
         * Add language property element if needed.
         */
        private void addLanguage() {
-               if (!propsPart.getLanguageProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_LANGUAGE, namespaceDC));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_LANGUAGE, 
namespaceDC));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getLanguageProperty().getValue());
+        setElementTextContent(KEYWORD_LANGUAGE, namespaceDC, 
propsPart.getLanguageProperty());
        }
 
        /**
         * Add 'last modified by' property if needed.
         */
        private void addLastModifiedBy() {
-               if (!propsPart.getLastModifiedByProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_LAST_MODIFIED_BY, 
namespaceCoreProperties));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement()
-                                       .addElement(
-                                                       new 
QName(KEYWORD_LAST_MODIFIED_BY,
-                                                                       
namespaceCoreProperties));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getLastModifiedByProperty().getValue());
+        setElementTextContent(KEYWORD_LAST_MODIFIED_BY, 
namespaceCoreProperties, propsPart.getLastModifiedByProperty());
        }
 
        /**
@@ -323,111 +237,39 @@ public class PackagePropertiesMarshaller
         *
         */
        private void addLastPrinted() {
-               if (!propsPart.getLastPrintedProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_LAST_PRINTED, 
namespaceCoreProperties));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_LAST_PRINTED, 
namespaceCoreProperties));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getLastPrintedPropertyString());
+        setElementTextContent(KEYWORD_LAST_PRINTED, namespaceCoreProperties, 
propsPart.getLastPrintedProperty(), propsPart.getLastPrintedPropertyString());
        }
 
        /**
         * Add modified property element if needed.
         */
        private void addModified() {
-               if (!propsPart.getModifiedProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_MODIFIED, namespaceDcTerms));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_MODIFIED, 
namespaceDcTerms));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addAttribute(new QName("type", namespaceXSI), 
"dcterms:W3CDTF");
-               elem.addText(propsPart.getModifiedPropertyString());
-       }
+        setElementTextContent(KEYWORD_MODIFIED, namespaceDcTerms, 
propsPart.getModifiedProperty(),
+                propsPart.getModifiedPropertyString(), "dcterms:W3CDTF");
+    }
 
        /**
         * Add revision property if needed.
         */
        private void addRevision() {
-               if (!propsPart.getRevisionProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_REVISION, 
namespaceCoreProperties));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_REVISION, 
namespaceCoreProperties));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getRevisionProperty().getValue());
+        setElementTextContent(KEYWORD_REVISION, namespaceCoreProperties, 
propsPart.getRevisionProperty());
        }
 
        /**
         * Add subject property if needed.
         */
        private void addSubject() {
-               if (!propsPart.getSubjectProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_SUBJECT, namespaceDC));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_SUBJECT, 
namespaceDC));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getSubjectProperty().getValue());
+        setElementTextContent(KEYWORD_SUBJECT, namespaceDC, 
propsPart.getSubjectProperty());
        }
 
        /**
         * Add title property if needed.
         */
        private void addTitle() {
-               if (!propsPart.getTitleProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_TITLE, namespaceDC));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_TITLE, namespaceDC));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getTitleProperty().getValue());
+        setElementTextContent(KEYWORD_TITLE, namespaceDC, 
propsPart.getTitleProperty());
        }
 
        private void addVersion() {
-               if (!propsPart.getVersionProperty().hasValue())
-                       return;
-
-               Element elem = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_VERSION, 
namespaceCoreProperties));
-               if (elem == null) {
-                       // missing, we add it
-                       elem = xmlDoc.getRootElement().addElement(
-                                       new QName(KEYWORD_VERSION, 
namespaceCoreProperties));
-               } else {
-                       elem.clearContent();// clear the old value
-               }
-               elem.addText(propsPart.getVersionProperty().getValue());
+        setElementTextContent(KEYWORD_VERSION, namespaceCoreProperties, 
propsPart.getVersionProperty());
        }
 }

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/ZipPartMarshaller.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/ZipPartMarshaller.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/ZipPartMarshaller.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/marshallers/ZipPartMarshaller.java
 Tue Aug 12 23:33:07 2014
@@ -24,11 +24,6 @@ import java.net.URI;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipOutputStream;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.dom4j.QName;
 import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.PackageNamespaces;
 import org.apache.poi.openxml4j.opc.PackagePart;
@@ -40,8 +35,11 @@ import org.apache.poi.openxml4j.opc.Stre
 import org.apache.poi.openxml4j.opc.TargetMode;
 import org.apache.poi.openxml4j.opc.internal.PartMarshaller;
 import org.apache.poi.openxml4j.opc.internal.ZipHelper;
+import org.apache.poi.util.DocumentHelper;
 import org.apache.poi.util.POILogger;
 import org.apache.poi.util.POILogFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
 
 /**
  * Zip part marshaller. This marshaller is use to save any part in a zip 
stream.
@@ -122,9 +120,8 @@ public final class ZipPartMarshaller imp
                Document xmlOutDoc = DocumentHelper.createDocument();
                // make something like <Relationships
                // 
xmlns="http://schemas.openxmlformats.org/package/2006/relationships";>
-               Namespace dfNs = Namespace.get("", 
PackageNamespaces.RELATIONSHIPS);
-               Element root = xmlOutDoc.addElement(new QName(
-                               PackageRelationship.RELATIONSHIPS_TAG_NAME, 
dfNs));
+               Element root = 
xmlOutDoc.createElementNS(PackageNamespaces.RELATIONSHIPS, 
PackageRelationship.RELATIONSHIPS_TAG_NAME);
+        xmlOutDoc.appendChild(root);
 
                // <Relationship
                // TargetMode="External"
@@ -137,16 +134,14 @@ public final class ZipPartMarshaller imp
 
                for (PackageRelationship rel : rels) {
                        // the relationship element
-                       Element relElem = root
-                                       
.addElement(PackageRelationship.RELATIONSHIP_TAG_NAME);
+            Element relElem = 
xmlOutDoc.createElement(PackageRelationship.RELATIONSHIP_TAG_NAME);
+            root.appendChild(relElem);
 
                        // the relationship ID
-                       
relElem.addAttribute(PackageRelationship.ID_ATTRIBUTE_NAME, rel
-                                       .getId());
+                       
relElem.setAttribute(PackageRelationship.ID_ATTRIBUTE_NAME, rel.getId());
 
                        // the relationship Type
-                       
relElem.addAttribute(PackageRelationship.TYPE_ATTRIBUTE_NAME, rel
-                                       .getRelationshipType());
+                       
relElem.setAttribute(PackageRelationship.TYPE_ATTRIBUTE_NAME, 
rel.getRelationshipType());
 
                        // the relationship Target
                        String targetValue;
@@ -157,16 +152,13 @@ public final class ZipPartMarshaller imp
                                targetValue = uri.toString();
 
                                // add TargetMode attribute (as it is external 
link external)
-                               relElem.addAttribute(
-                                               
PackageRelationship.TARGET_MODE_ATTRIBUTE_NAME,
-                                               "External");
+                               
relElem.setAttribute(PackageRelationship.TARGET_MODE_ATTRIBUTE_NAME, 
"External");
                        } else {
                 URI targetURI = rel.getTargetURI();
                 targetValue = PackagingURIHelper.relativizeURI(
                                                sourcePartURI, targetURI, 
true).toString();
                        }
-                       
relElem.addAttribute(PackageRelationship.TARGET_ATTRIBUTE_NAME,
-                                       targetValue);
+                       
relElem.setAttribute(PackageRelationship.TARGET_ATTRIBUTE_NAME, targetValue);
                }
 
                xmlOutDoc.normalize();

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/unmarshallers/PackagePropertiesUnmarshaller.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/unmarshallers/PackagePropertiesUnmarshaller.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/unmarshallers/PackagePropertiesUnmarshaller.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/openxml4j/opc/internal/unmarshallers/PackagePropertiesUnmarshaller.java
 Tue Aug 12 23:33:07 2014
@@ -19,10 +19,10 @@ package org.apache.poi.openxml4j.opc.int
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.Iterator;
-import java.util.List;
 import java.util.zip.ZipEntry;
 
+import javax.xml.XMLConstants;
+
 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.openxml4j.opc.PackageNamespaces;
 import org.apache.poi.openxml4j.opc.PackagePart;
@@ -32,12 +32,12 @@ import org.apache.poi.openxml4j.opc.inte
 import org.apache.poi.openxml4j.opc.internal.PartUnmarshaller;
 import org.apache.poi.openxml4j.opc.internal.ZipHelper;
 import org.apache.poi.util.SAXHelper;
-import org.dom4j.Attribute;
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.dom4j.QName;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
 
 /**
  * Package properties unmarshaller.
@@ -46,21 +46,6 @@ import org.dom4j.QName;
  */
 public final class PackagePropertiesUnmarshaller implements PartUnmarshaller {
 
-       private final static Namespace namespaceDC = new Namespace("dc",
-                       PackageProperties.NAMESPACE_DC);
-
-       private final static Namespace namespaceCP = new Namespace("cp",
-                       PackageNamespaces.CORE_PROPERTIES);
-
-       private final static Namespace namespaceDcTerms = new 
Namespace("dcterms",
-                       PackageProperties.NAMESPACE_DCTERMS);
-
-       private final static Namespace namespaceXML = new Namespace("xml",
-                       "http://www.w3.org/XML/1998/namespace";);
-
-       private final static Namespace namespaceXSI = new Namespace("xsi",
-                       "http://www.w3.org/2001/XMLSchema-instance";);
-
        protected static final String KEYWORD_CATEGORY = "category";
 
        protected static final String KEYWORD_CONTENT_STATUS = "contentStatus";
@@ -125,15 +110,15 @@ public final class PackagePropertiesUnma
                        /* Check OPC compliance */
 
                        // Rule M4.2, M4.3, M4.4 and M4.5/
-                       checkElementForOPCCompliance(xmlDoc.getRootElement());
+                       
checkElementForOPCCompliance(xmlDoc.getDocumentElement());
 
                        /* End OPC compliance */
 
-               } catch (DocumentException e) {
-                       throw new IOException(e.getMessage());
-               }
+        } catch (SAXException e) {
+            throw new IOException(e.getMessage());
+        }
 
-               coreProps.setCategoryProperty(loadCategory(xmlDoc));
+        coreProps.setCategoryProperty(loadCategory(xmlDoc));
                coreProps.setContentStatusProperty(loadContentStatus(xmlDoc));
                coreProps.setContentTypeProperty(loadContentType(xmlDoc));
                coreProps.setCreatedProperty(loadCreated(xmlDoc));
@@ -153,148 +138,76 @@ public final class PackagePropertiesUnma
                return coreProps;
        }
 
+    private String readElement(Document xmlDoc, String localName, String 
namespaceURI) {
+        Element el = 
(Element)xmlDoc.getDocumentElement().getElementsByTagNameNS(namespaceURI, 
localName).item(0);
+        if (el == null) {
+            return null;
+        }
+        return el.getTextContent();
+    }
+
        private String loadCategory(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_CATEGORY, namespaceCP));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_CATEGORY, 
PackageNamespaces.CORE_PROPERTIES);
        }
 
-       private String loadContentStatus(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_CONTENT_STATUS, namespaceCP));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+    private String loadContentStatus(Document xmlDoc) {
+        return readElement(xmlDoc, KEYWORD_CONTENT_STATUS, 
PackageNamespaces.CORE_PROPERTIES);
        }
 
        private String loadContentType(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_CONTENT_TYPE, namespaceCP));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_CONTENT_TYPE, 
PackageNamespaces.CORE_PROPERTIES);
        }
 
        private String loadCreated(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_CREATED, namespaceDcTerms));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_CREATED, 
PackageProperties.NAMESPACE_DCTERMS);
        }
 
        private String loadCreator(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_CREATOR, namespaceDC));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_CREATOR, 
PackageProperties.NAMESPACE_DC);
        }
 
        private String loadDescription(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_DESCRIPTION, namespaceDC));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_DESCRIPTION, 
PackageProperties.NAMESPACE_DC);
        }
 
        private String loadIdentifier(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_IDENTIFIER, namespaceDC));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_IDENTIFIER, 
PackageProperties.NAMESPACE_DC);
        }
 
        private String loadKeywords(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_KEYWORDS, namespaceCP));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_KEYWORDS, 
PackageNamespaces.CORE_PROPERTIES);
        }
 
        private String loadLanguage(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_LANGUAGE, namespaceDC));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_LANGUAGE, 
PackageProperties.NAMESPACE_DC);
        }
 
        private String loadLastModifiedBy(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_LAST_MODIFIED_BY, 
namespaceCP));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_LAST_MODIFIED_BY, 
PackageNamespaces.CORE_PROPERTIES);
        }
 
        private String loadLastPrinted(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_LAST_PRINTED, namespaceCP));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_LAST_PRINTED, 
PackageNamespaces.CORE_PROPERTIES);
        }
 
        private String loadModified(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_MODIFIED, namespaceDcTerms));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_MODIFIED, 
PackageProperties.NAMESPACE_DCTERMS);
        }
 
        private String loadRevision(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_REVISION, namespaceCP));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_REVISION, 
PackageNamespaces.CORE_PROPERTIES);
        }
 
        private String loadSubject(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_SUBJECT, namespaceDC));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_SUBJECT, 
PackageProperties.NAMESPACE_DC);
        }
 
        private String loadTitle(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_TITLE, namespaceDC));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_TITLE, 
PackageProperties.NAMESPACE_DC);
        }
 
        private String loadVersion(Document xmlDoc) {
-               Element el = xmlDoc.getRootElement().element(
-                               new QName(KEYWORD_VERSION, namespaceCP));
-               if (el == null) {
-                       return null;
-               }
-               return el.getStringValue();
+        return readElement(xmlDoc, KEYWORD_VERSION, 
PackageNamespaces.CORE_PROPERTIES);
        }
 
        /* OPC Compliance methods */
@@ -325,60 +238,56 @@ public final class PackagePropertiesUnma
        public void checkElementForOPCCompliance(Element el)
                        throws InvalidFormatException {
                // Check the current element
-               @SuppressWarnings("unchecked")
-               List<Namespace> declaredNamespaces = el.declaredNamespaces();
-               Iterator<Namespace> itNS = declaredNamespaces.iterator();
-               while (itNS.hasNext()) {
-                       Namespace ns = itNS.next();
-
-                       // Rule M4.2
-                       if 
(ns.getURI().equals(PackageNamespaces.MARKUP_COMPATIBILITY))
-                               throw new InvalidFormatException(
-                                               "OPC Compliance error [M4.2]: A 
format consumer shall consider the use of the Markup Compatibility namespace to 
be an error.");
-               }
+        NamedNodeMap namedNodeMap = el.getAttributes();
+        int namedNodeCount = namedNodeMap.getLength();
+        for (int i = 0; i < namedNodeCount; i++) {
+            Attr attr = (Attr)namedNodeMap.item(0);
+
+            if 
(attr.getNamespaceURI().equals(XMLConstants.XMLNS_ATTRIBUTE_NS_URI)) {
+                // Rule M4.2
+                if 
(attr.getValue().equals(PackageNamespaces.MARKUP_COMPATIBILITY))
+                    throw new InvalidFormatException(
+                            "OPC Compliance error [M4.2]: A format consumer 
shall consider the use of the Markup Compatibility namespace to be an error.");
+
+            }
+        }
 
                // Rule M4.3
-               if (el.getNamespace().getURI().equals(
-                               PackageProperties.NAMESPACE_DCTERMS)
-                               && !(el.getName().equals(KEYWORD_CREATED) || 
el.getName()
-                                               .equals(KEYWORD_MODIFIED)))
-                       throw new InvalidFormatException(
-                                       "OPC Compliance error [M4.3]: Producers 
shall not create a document element that contains refinements to the Dublin 
Core elements, except for the two specified in the schema: <dcterms:created> 
and <dcterms:modified> Consumers shall consider a document element that 
violates this constraint to be an error.");
+        String elName = el.getLocalName();
+        if (el.getNamespaceURI().equals(PackageProperties.NAMESPACE_DCTERMS))
+            if (!(elName.equals(KEYWORD_CREATED) || 
elName.equals(KEYWORD_MODIFIED)))
+                throw new InvalidFormatException(
+                        "OPC Compliance error [M4.3]: Producers shall not 
create a document element that contains refinements to the Dublin Core 
elements, except for the two specified in the schema: <dcterms:created> and 
<dcterms:modified> Consumers shall consider a document element that violates 
this constraint to be an error.");
 
                // Rule M4.4
-               if (el.attribute(new QName("lang", namespaceXML)) != null)
+               if (el.getAttributeNodeNS(XMLConstants.XML_NS_URI, "lang") != 
null)
                        throw new InvalidFormatException(
                                        "OPC Compliance error [M4.4]: Producers 
shall not create a document element that contains the xml:lang attribute. 
Consumers shall consider a document element that violates this constraint to be 
an error.");
 
                // Rule M4.5
-               if (el.getNamespace().getURI().equals(
-                               PackageProperties.NAMESPACE_DCTERMS)) {
+               if 
(el.getNamespaceURI().equals(PackageProperties.NAMESPACE_DCTERMS)) {
                        // DCTerms namespace only use with 'created' and 
'modified' elements
-                       String elName = el.getName();
-                       if (!(elName.equals(KEYWORD_CREATED) || elName
-                                       .equals(KEYWORD_MODIFIED)))
+                       if (!(elName.equals(KEYWORD_CREATED) || 
elName.equals(KEYWORD_MODIFIED)))
                                throw new InvalidFormatException("Namespace 
error : " + elName
                                                + " shouldn't have the 
following naemspace -> "
                                                + 
PackageProperties.NAMESPACE_DCTERMS);
 
                        // Check for the 'xsi:type' attribute
-                       Attribute typeAtt = el.attribute(new QName("type", 
namespaceXSI));
+                       Attr typeAtt = 
el.getAttributeNodeNS(XMLConstants.W3C_XML_SCHEMA_INSTANCE_NS_URI, "type");
                        if (typeAtt == null)
                                throw new InvalidFormatException("The element 
'" + elName
-                                               + "' must have the '" + 
namespaceXSI.getPrefix()
-                                               + ":type' attribute present !");
+                                               + "' must have the 'xsi:type' 
attribute present !");
 
                        // Check for the attribute value => 'dcterms:W3CDTF'
                        if (!typeAtt.getValue().equals("dcterms:W3CDTF"))
                                throw new InvalidFormatException("The element 
'" + elName
-                                               + "' must have the '" + 
namespaceXSI.getPrefix()
-                                               + ":type' attribute with the 
value 'dcterms:W3CDTF' !");
+                                               + "' must have the 'xsi:type' 
attribute with the value 'dcterms:W3CDTF' !");
                }
 
                // Check its children
-               @SuppressWarnings("unchecked")
-               Iterator<Element> itChildren = el.elementIterator();
-               while (itChildren.hasNext())
-                       checkElementForOPCCompliance(itChildren.next());
+        NodeList childElements = el.getElementsByTagName("*");
+        int childElementCount = childElements.getLength();
+        for (int i = 0; i < childElementCount; i++)
+            checkElementForOPCCompliance((Element)childElements.item(i));
        }
 }

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/HorribleProxies.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/HorribleProxies.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/HorribleProxies.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/HorribleProxies.java
 Tue Aug 12 23:33:07 2014
@@ -176,6 +176,7 @@ public interface HorribleProxies {
     public interface OCSPRespIf extends ProxyIf {
         String delegateClass = "org.bouncycastle.cert.ocsp.OCSPResp";
         BasicOCSPRespIf getResponseObject();
+        byte[] getEncoded() throws IOException;
     }
     
     public interface PKIFailureInfoIf extends ProxyIf {

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java
 Tue Aug 12 23:33:07 2014
@@ -171,7 +171,7 @@ public class SignatureInfo {
             KeyInfoKeySelector keySelector = new KeyInfoKeySelector();
 
             try {
-                Document doc = 
SAXHelper.readSAXDocumentW3C(signaturePart.getInputStream());
+                Document doc = 
SAXHelper.readSAXDocument(signaturePart.getInputStream());
                 // dummy call to createSignatureService to tweak document 
afterwards
                 createSignatureService(HashAlgorithm.sha1, 
pkg).registerIds(doc);
                 

Added: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/EnvelopedSignatureFacet.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/EnvelopedSignatureFacet.java?rev=1617624&view=auto
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/EnvelopedSignatureFacet.java
 (added)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/facets/EnvelopedSignatureFacet.java
 Tue Aug 12 23:33:07 2014
@@ -0,0 +1,84 @@
+package org.apache.poi.poifs.crypt.dsig.facets;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.crypto.dsig.CanonicalizationMethod;
+import javax.xml.crypto.dsig.DigestMethod;
+import javax.xml.crypto.dsig.Reference;
+import javax.xml.crypto.dsig.Transform;
+import javax.xml.crypto.dsig.XMLObject;
+import javax.xml.crypto.dsig.XMLSignatureFactory;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+
+import org.apache.poi.poifs.crypt.HashAlgorithm;
+import org.w3.x2000.x09.xmldsig.SignatureType;
+
+/**
+ * Signature Facet implementation to create enveloped signatures.
+ * 
+ * @author Frank Cornelis
+ * 
+ */
+public class EnvelopedSignatureFacet implements SignatureFacet {
+
+    private final HashAlgorithm hashAlgo;
+
+    /**
+     * Default constructor. Digest algorithm will be SHA-1.
+     */
+    public EnvelopedSignatureFacet() {
+        this(HashAlgorithm.sha1);
+    }
+
+    /**
+     * Main constructor.
+     * 
+     * @param hashAlgo
+     *            the digest algorithm to be used within the ds:Reference
+     *            element. Possible values: "SHA-1", "SHA-256, or "SHA-512".
+     */
+    public EnvelopedSignatureFacet(HashAlgorithm hashAlgo) {
+        this.hashAlgo = hashAlgo;
+    }
+
+    @Override
+    public void postSign(SignatureType signatureElement
+        , List<X509Certificate> signingCertificateChain) {
+        // empty
+    }
+
+    @Override
+    public void preSign(XMLSignatureFactory signatureFactory,
+            String signatureId,
+            List<X509Certificate> signingCertificateChain,
+            List<Reference> references, List<XMLObject> objects)
+            throws NoSuchAlgorithmException, 
InvalidAlgorithmParameterException {
+        DigestMethod digestMethod = signatureFactory.newDigestMethod(
+                this.hashAlgo.xmlSignUri, null);
+
+        List<Transform> transforms = new LinkedList<Transform>();
+        Transform envelopedTransform = signatureFactory
+                .newTransform(CanonicalizationMethod.ENVELOPED,
+                        (TransformParameterSpec) null);
+        transforms.add(envelopedTransform);
+        Transform exclusiveTransform = signatureFactory
+                .newTransform(CanonicalizationMethod.EXCLUSIVE,
+                        (TransformParameterSpec) null);
+        transforms.add(exclusiveTransform);
+
+        Reference reference = signatureFactory.newReference("", digestMethod,
+                transforms, null, null);
+
+        references.add(reference);
+    }
+
+    @Override
+    public Map<String,String> getNamespacePrefixMapping() {
+        return null;
+    }
+}

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/services/XmlSignatureService.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/services/XmlSignatureService.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/services/XmlSignatureService.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/services/XmlSignatureService.java
 Tue Aug 12 23:33:07 2014
@@ -174,8 +174,10 @@ public class XmlSignatureService impleme
      * 
      * @param signatureFacet
      */
-    protected void addSignatureFacet(SignatureFacet signatureFacet) {
-        this.signatureFacets.add(signatureFacet);
+    public void addSignatureFacet(SignatureFacet... signatureFacets) {
+        for (SignatureFacet sf : signatureFacets) {
+            this.signatureFacets.add(sf);
+        }
     }
 
     /**

Modified: 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/util/SAXHelper.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/java/org/apache/poi/util/SAXHelper.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/util/SAXHelper.java 
(original)
+++ 
poi/branches/xml_signature/src/ooxml/java/org/apache/poi/util/SAXHelper.java 
Tue Aug 12 23:33:07 2014
@@ -27,9 +27,7 @@ import javax.xml.parsers.DocumentBuilder
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
-import org.dom4j.Document;
-import org.dom4j.DocumentException;
-import org.dom4j.io.SAXReader;
+import org.w3c.dom.Document;
 import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -40,59 +38,7 @@ import org.xml.sax.SAXException;
  */
 public final class SAXHelper {
     private static POILogger logger = POILogFactory.getLogger(SAXHelper.class);
-            
-    /**
-     * Creates a new SAX Reader, with sensible defaults
-     */
-    public static SAXReader getSAXReader() {
-        SAXReader xmlReader = new SAXReader();
-        xmlReader.setValidation(false);
-        xmlReader.setEntityResolver(new EntityResolver() {
-            public InputSource resolveEntity(String publicId, String systemId)
-                    throws SAXException, IOException {
-                return new InputSource(new StringReader(""));
-            }
-        });
-        trySetSAXFeature(xmlReader, XMLConstants.FEATURE_SECURE_PROCESSING, 
true);
-        trySetXercesSecurityManager(xmlReader);
-        return xmlReader;
-    }
-    private static void trySetSAXFeature(SAXReader xmlReader, String feature, 
boolean enabled) {
-        try {
-            xmlReader.setFeature(feature, enabled);
-        } catch (Exception e) {
-            logger.log(POILogger.INFO, "SAX Feature unsupported", feature, e);
-        }
-    }
-    private static void trySetXercesSecurityManager(SAXReader xmlReader) {
-        // Try built-in JVM one first, standalone if not
-        for (String securityManagerClassName : new String[] {
-                "com.sun.org.apache.xerces.internal.util.SecurityManager",
-                "org.apache.xerces.util.SecurityManager"
-        }) {
-            try {
-                Object mgr = 
Class.forName(securityManagerClassName).newInstance();
-                Method setLimit = 
mgr.getClass().getMethod("setEntityExpansionLimit", Integer.TYPE);
-                setLimit.invoke(mgr, 4096);
-                
xmlReader.setProperty("http://apache.org/xml/properties/security-manager";, mgr);
-                // Stop once one can be setup without error
-                return;
-            } catch (Exception e) {
-                logger.log(POILogger.INFO, "SAX Security Manager could not be 
setup", e);
-            }
-        }
-    }
 
-    /**
-     * Parses the given stream via the default (sensible)
-     * SAX Reader
-     * @param inp Stream to read the XML data from
-     * @return the SAX processed Document 
-     */
-    public static Document readSAXDocument(InputStream inp) throws 
DocumentException {
-        return getSAXReader().read(inp);
-    }
-    
     private static final EntityResolver IGNORING_ENTITY_RESOLVER = new 
EntityResolver() {
         @Override
         public InputSource resolveEntity(String publicId, String systemId)
@@ -101,6 +47,27 @@ public final class SAXHelper {
         }
     };
 
+    private static final DocumentBuilderFactory documentBuilderFactory = 
DocumentBuilderFactory.newInstance();
+    static {
+        documentBuilderFactory.setNamespaceAware(true);
+        documentBuilderFactory.setValidating(false);
+        trySetSAXFeature(documentBuilderFactory, 
XMLConstants.FEATURE_SECURE_PROCESSING, true);
+        trySetXercesSecurityManager(documentBuilderFactory);
+    }
+
+    /**
+     * Creates a new document builder, with sensible defaults
+     */
+    public static synchronized DocumentBuilder getDocumentBuilder() {
+        try {
+            DocumentBuilder documentBuilder = 
documentBuilderFactory.newDocumentBuilder();
+            documentBuilder.setEntityResolver(IGNORING_ENTITY_RESOLVER);
+            return documentBuilder;
+        } catch (ParserConfigurationException e) {
+            throw new IllegalStateException("cannot create a DocumentBuilder", 
e);
+        }
+    }
+
     private static void trySetSAXFeature(DocumentBuilderFactory 
documentBuilderFactory, String feature, boolean enabled) {
         try {
             documentBuilderFactory.setFeature(feature, enabled);
@@ -126,38 +93,14 @@ public final class SAXHelper {
             }
         }
     }
-    
-    private static final ThreadLocal<DocumentBuilder> documentBuilder = new 
ThreadLocal<DocumentBuilder>() {
-        @Override
-        protected DocumentBuilder initialValue() {
-            DocumentBuilderFactory factory = 
DocumentBuilderFactory.newInstance();
-            factory.setNamespaceAware(true);
-            factory.setValidating(false);
-            trySetSAXFeature(factory, XMLConstants.FEATURE_SECURE_PROCESSING, 
true);
-            trySetXercesSecurityManager(factory);
-            try {
-                return factory.newDocumentBuilder();
-            } catch (ParserConfigurationException e) {
-                throw new IllegalStateException("cannot create a 
DocumentBuilder", e);
-            }
-        }
 
-        @Override
-        public DocumentBuilder get() {
-            DocumentBuilder documentBuilder = super.get();
-            documentBuilder.reset();
-            documentBuilder.setEntityResolver(IGNORING_ENTITY_RESOLVER);
-            return documentBuilder;
-        }
-    };
-    
     /**
      * Parses the given stream via the default (sensible)
      * SAX Reader
      * @param inp Stream to read the XML data from
      * @return the SAX processed Document 
      */
-    public static org.w3c.dom.Document readSAXDocumentW3C(InputStream inp) 
throws IOException, SAXException {
-        return documentBuilder.get().parse(inp);
+    public static Document readSAXDocument(InputStream inp) throws 
IOException, SAXException {
+        return getDocumentBuilder().parse(inp);
     }
 }

Modified: 
poi/branches/xml_signature/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
URL: 
http://svn.apache.org/viewvc/poi/branches/xml_signature/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java?rev=1617624&r1=1617623&r2=1617624&view=diff
==============================================================================
--- 
poi/branches/xml_signature/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
 (original)
+++ 
poi/branches/xml_signature/src/ooxml/testcases/org/apache/poi/openxml4j/opc/TestPackage.java
 Tue Aug 12 23:33:07 2014
@@ -27,7 +27,6 @@ import java.io.OutputStream;
 import java.lang.reflect.Field;
 import java.net.URI;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.TreeMap;
 import java.util.regex.Pattern;
@@ -40,15 +39,14 @@ import org.apache.poi.openxml4j.exceptio
 import org.apache.poi.openxml4j.opc.internal.ContentTypeManager;
 import org.apache.poi.openxml4j.opc.internal.FileHelper;
 import org.apache.poi.openxml4j.opc.internal.PackagePropertiesPart;
+import org.apache.poi.util.DocumentHelper;
 import org.apache.poi.util.POILogFactory;
 import org.apache.poi.util.POILogger;
 import org.apache.poi.util.SAXHelper;
 import org.apache.poi.util.TempFile;
-import org.dom4j.Document;
-import org.dom4j.DocumentHelper;
-import org.dom4j.Element;
-import org.dom4j.Namespace;
-import org.dom4j.QName;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.NodeList;
 
 public final class TestPackage extends TestCase {
     private static final POILogger logger = 
POILogFactory.getLogger(TestPackage.class);
@@ -127,18 +125,17 @@ public final class TestPackage extends T
                         
"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml");
 
         Document doc = DocumentHelper.createDocument();
-        Namespace nsWordprocessinML = new Namespace("w",
-                
"http://schemas.openxmlformats.org/wordprocessingml/2006/main";);
-        Element elDocument = doc.addElement(new QName("document",
-                nsWordprocessinML));
-        Element elBody = elDocument.addElement(new QName("body",
-                nsWordprocessinML));
-        Element elParagraph = elBody.addElement(new QName("p",
-                nsWordprocessinML));
-        Element elRun = elParagraph
-                .addElement(new QName("r", nsWordprocessinML));
-        Element elText = elRun.addElement(new QName("t", nsWordprocessinML));
-        elText.setText("Hello Open XML !");
+        Element elDocument = 
doc.createElementNS("http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
 "w:document");
+        doc.appendChild(elDocument);
+        Element elBody = 
doc.createElementNS("http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
 "w:body");
+        elDocument.appendChild(elBody);
+        Element elParagraph = 
doc.createElementNS("http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
 "w:p");
+        elBody.appendChild(elParagraph);
+        Element elRun = 
doc.createElementNS("http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
 "w:r");
+        elParagraph.appendChild(elRun);
+        Element elText = 
doc.createElementNS("http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
 "w:t");
+        elRun.appendChild(elText);
+        elText.setTextContent("Hello Open XML !");
 
         StreamHelper.saveXmlInStream(doc, corePart.getOutputStream());
         pkg.close();
@@ -223,15 +220,13 @@ public final class TestPackage extends T
 
         Document xmlRelationshipsDoc = 
SAXHelper.readSAXDocument(relPart.getInputStream());
 
-        Element root = xmlRelationshipsDoc.getRootElement();
-        for (Iterator i = root
-                .elementIterator(PackageRelationship.RELATIONSHIP_TAG_NAME); i
-                .hasNext();) {
-            Element element = (Element) i.next();
-            String value = element.attribute(
-                    PackageRelationship.TARGET_ATTRIBUTE_NAME)
-                    .getValue();
-            assertTrue("Root target must not start with a leadng slash ('/'): 
" + value, value.charAt(0) != '/');
+        Element root = xmlRelationshipsDoc.getDocumentElement();
+        NodeList nodeList = 
root.getElementsByTagName(PackageRelationship.RELATIONSHIP_TAG_NAME);
+        int nodeCount = nodeList.getLength();
+        for (int i = 0; i < nodeCount; i++) {
+            Element element = (Element) nodeList.item(i);
+            String value = 
element.getAttribute(PackageRelationship.TARGET_ATTRIBUTE_NAME);
+            assertTrue("Root target must not start with a leading slash ('/'): 
" + value, value.charAt(0) != '/');
         }
 
     }
@@ -268,18 +263,17 @@ public final class TestPackage extends T
 
                // Create a content
                Document doc = DocumentHelper.createDocument();
-               Namespace nsWordprocessinML = new Namespace("w",
-                               
"http://schemas.openxmlformats.org/wordprocessingml/2006/main";);
-               Element elDocument = doc.addElement(new QName("document",
-                               nsWordprocessinML));
-               Element elBody = elDocument.addElement(new QName("body",
-                               nsWordprocessinML));
-               Element elParagraph = elBody.addElement(new QName("p",
-                               nsWordprocessinML));
-               Element elRun = elParagraph
-                               .addElement(new QName("r", nsWordprocessinML));
-               Element elText = elRun.addElement(new QName("t", 
nsWordprocessinML));
-               elText.setText("Hello Open XML !");
+        Element elDocument = 
doc.createElementNS("http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
 "w:document");
+        doc.appendChild(elDocument);
+        Element elBody = 
doc.createElementNS("http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
 "w:body");
+        elDocument.appendChild(elBody);
+        Element elParagraph = 
doc.createElementNS("http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
 "w:p");
+        elBody.appendChild(elParagraph);
+        Element elRun = 
doc.createElementNS("http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
 "w:r");
+        elParagraph.appendChild(elRun);
+        Element elText = 
doc.createElementNS("http://schemas.openxmlformats.org/wordprocessingml/2006/main";,
 "w:t");
+        elRun.appendChild(elText);
+        elText.setTextContent("Hello Open XML !");
 
                StreamHelper.saveXmlInStream(doc, corePart.getOutputStream());
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to