If I create a Document by reading it from a String (as in the WS examples) I can add it to a SOAPBody. But if I create the same document programatically I get a NAMESPACE_ERR. In the example below I created the Document programatically, converted it to a String, and then back to a Document. The second worked, the first did not.
I have changed the version of the XerceImpl.jar, without any difference. Any advice would be much appreciated. Should I submit a bug? adding doc from ByteArrayInputStream: | <?xml version="1.0" encoding="UTF-8"?> | <Order><Customer>Kermit</Customer><Item>Ferrari</Item></Order> | adding doc from program: | | org.w3c.dom.DOMException: NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces. | at org.apache.xerces.dom.ElementNSImpl.setName(Unknown Source) | at org.apache.xerces.dom.ElementNSImpl.<init>(Unknown Source) | at org.apache.xerces.dom.CoreDocumentImpl.createElementNS(Unknown Source) | at org.jboss.util.xml.DOMUtils.createElement(DOMUtils.java:140) | at org.jboss.ws.soap.SOAPElementImpl.<init>(SOAPElementImpl.java:79) | at org.jboss.ws.soap.SOAPFactoryImpl.createElement(SOAPFactoryImpl.java:75) | at org.jboss.ws.soap.SOAPBodyImpl.addDocument(SOAPBodyImpl.java:82) | at test.TestNs.<init>(TestNs.java:40) | at test.TestNs.main(TestNs.java:73) Program: package test; import java.io.ByteArrayInputStream; | import java.io.StringWriter; | | import javax.xml.parsers.DocumentBuilder; | import javax.xml.parsers.DocumentBuilderFactory; | import javax.xml.soap.MessageFactory; | import javax.xml.soap.SOAPBody; | import org.w3c.dom.Document; | import org.w3c.dom.Element; | import com.ibm.wsdl.util.xml.DOM2Writer; | | public class TestNs { | | public TestNs() { | try { | MessageFactory mf = MessageFactory.newInstance(); | SOAPBody body = mf.createMessage().getSOAPBody(); | SOAPBody body2 = mf.createMessage().getSOAPBody(); | DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); | docBuilderFactory.setNamespaceAware(true); | DocumentBuilder builder = docBuilderFactory.newDocumentBuilder(); | | Document doc = getDoc(); | | StringWriter swr = new StringWriter(); | DOM2Writer.serializeAsXML(doc, swr); | String xml = swr.toString(); | | Document doc2 = builder.parse(new ByteArrayInputStream(xml.getBytes())); | | System.out.println("adding doc from ByteArrayInputStream: \n" + swr); | body2.addDocument(doc2); | | System.out.println("adding doc from program:\n"); | // NAMESPACE_ERR ! | body.addDocument(doc); | | } catch (Exception e) { | e.printStackTrace(); | } | } | | private Document getDoc() { | try { | DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); | docBuilderFactory.setNamespaceAware(true); | DocumentBuilder builder = docBuilderFactory.newDocumentBuilder(); | Document root = builder.newDocument(); | | Element orderEl = root.createElement("Order"); | root.appendChild(orderEl); | | Element customerEl = root.createElement("Customer"); | orderEl.appendChild(customerEl); | customerEl.appendChild(root.createTextNode("Kermit")); | | Element itemEl = root.createElement("Item"); | orderEl.appendChild(itemEl); | itemEl.appendChild(root.createTextNode("Ferrari")); | | return root; | } catch (Exception e) { | e.printStackTrace(); | return null; | } | } | | public static void main(String[] args) { | new TestNs(); | } | } View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3955220#3955220 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3955220 Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ JBoss-user mailing list JBoss-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jboss-user