Re: xmlOutputter question

Jason Hunter <[email protected]>
Newsgroups gmane.comp.java.jdom.general
Message-ID <[email protected]>
I'd try flushing the output stream to make the content actually go  
over the wire.  If that's not it exactly, it's probably something like  
that.

-jh-

On Jan 16, 2009, at 5:26 AM, Rick Avlonitis wrote:

> When I call xmlOutputter.output(docForPosting,  
> http.getOutputStream()), this fails to update the data  but I get:  
> (Response Code: 200, Response Message: OK).
> But when I write the docForPosting to a file and then create a new  
> document from the parsed file, I can successfully update the data  
> (Response Code: 200, Response Message: OK).
>
> Why can I not put data successfully on the server with  
> xmlOutputter.output(docForPosting, http.getOutputStream())?
>
> Your help will be appreciated.  My code is below:
>
>
> package myJDom;
>
> import org.jdom.*;
> import org.jdom.input.DOMBuilder;
> import org.jdom.input.SAXBuilder;
> import org.jdom.output.XMLOutputter;
> import org.xml.sax.SAXException;
>
> import java.io.File;
> import java.io.FileWriter;
> import java.io.IOException;
> import java.net.Authenticator;
> import java.net.HttpURLConnection;
> import java.net.URISyntaxException;
> import java.net.URL;
> import java.net.URLConnection;
> import java.util.ArrayList;
> import java.util.List;
>
> import javax.xml.parsers.DocumentBuilder;
> import javax.xml.parsers.DocumentBuilderFactory;
> import javax.xml.parsers.ParserConfigurationException;
>
> public class MyJDomParser {
>     protected List<Element> rawElementList = new ArrayList<Element>();
>     protected List<Element> scrubbedElementList = new  
> ArrayList<Element>();
>     protected List<Element> newElementList = new ArrayList<Element>();
>     protected SAXBuilder saxBuilder = new SAXBuilder();
>     protected DOMBuilder domBuilder = new DOMBuilder();
>     protected Document rawDoc = new Document();
>     protected Element element;
>
>     @SuppressWarnings("unchecked")
>     public void parseUrl() throws JDOMException, IOException {
>         System.out.println("preparing to parse the elements...");
>         URL url = new URL(
>                 "http://192.168.1.199:3334/sdata/slx/dynamic/accounts(A6UJ9A000036) 
> ");
>         saxBuilder.setIgnoringElementContentWhitespace(true);
>         rawDoc = saxBuilder.build(url);
>
>         element = rawDoc.getRootElement();
>         rawElementList.addAll(element.getChildren());
>
>         for (int i = 0; i < 3; i++) {// remove 2 useless elements
>             rawElementList.remove(0);
>         }
>
>         for (int i = 0; i < rawElementList.size(); i++) {
>             String s = rawElementList.get(i).getText();
>             if (s != null && s != "") {
>                 scrubbedElementList.add(rawElementList.get(i));
>             }
>         }
>
>         for (Element e : scrubbedElementList) {
>             System.out.println(e.getText());
>         }
>         // for (Element e : rawElementList) {
>         // System.out.println(e.getText());
>         // }
>     }
>
>     public void getAllChangedElements() throws URISyntaxException {
>         System.out.println("preparing to change the data...");
>         Element entry = new Element("entry");
>         entry.addNamespaceDeclaration(Namespace.getNamespace(""));
>         newElementList.add(entry);
>         // rawElementList.add(entry);
>
>         for (int i = 0; i < scrubbedElementList.size(); i++) {
>             String s = scrubbedElementList.get(i).getText();
>             String name = scrubbedElementList.get(i).getName();
>             if (s != null && s != "") {
>                 if (name == "AccountName") {
>                     s = "****55555******";
>                 }
>                 Element e = new Element(name);
>                 e.setText(s);
>                 newElementList.add(e);
>             }
>         }
>         // return newData;
>         // for (Element e : newElementList) {
>         // System.out.println(e.getText());
>         // }
>     }
>
>     public void postData() throws IOException, JDOMException,
>             ParserConfigurationException, SAXException {
>         // building a document from DOM
>         DocumentBuilderFactory dbfac =  
> DocumentBuilderFactory.newInstance();
>         DocumentBuilder docBuilder = dbfac.newDocumentBuilder();
>         org.w3c.dom.Document docPrepareToPost =  
> docBuilder.newDocument();
>
>         // create my root element
>         org.w3c.dom.Element root =  
> docPrepareToPost.createElement("entry");
>         docPrepareToPost.appendChild(root);
>
>         // add elements to my dom doc
>         for (int i = 0; i < newElementList.size(); i++) {
>             org.w3c.dom.Element child = docPrepareToPost
>                     .createElement(newElementList.get(i).getName());
>             child.setTextContent(newElementList.get(i).getText());
>             root.appendChild(child);
>         }
>
>         // parsing my doc from the file allows me a successful post
>         // FileWriter fs = new FileWriter("/home/rick/deleteme/ 
> crap2");
>         // //posting is successful from this parsed file
>         // xmlOutputter.output(docForPosting, fs);
>
>         DocumentBuilderFactory factory =  
> DocumentBuilderFactory.newInstance();
>         docPrepareToPost = factory.newDocumentBuilder().parse(
>                 new File("/home/rick/deleteme/crap2"));
>
>         // setting up the stream
>         URL url = new URL(
>                 "http://192.168.1.199:3334/sdata/slx/dynamic/accounts(A6UJ9A000036) 
> ");
>         URLConnection connection = url.openConnection();
>         connection.setDoOutput(true);
>         java.net.HttpURLConnection http = (HttpURLConnection)  
> connection;
>         http.setRequestMethod("PUT");
>         HttpURLConnection.setFollowRedirects(true);
>         http.setRequestProperty("Content-type",
>                 "application/atom+xml;type=entry");
>
>         // creating a JDom doc from the DOM doc to facilitate  
> streaming to the
>         // server
>         org.jdom.Document docForPosting =  
> domBuilder.build(docPrepareToPost);
>
>         XMLOutputter xmlOutputter = new XMLOutputter();
>         //this fails to update the data (Response Code: 200,  
> Response Message: OK)
>         xmlOutputter.output(docForPosting, http.getOutputStream());
>         //output seems ok
>         xmlOutputter.output(docForPosting, System.out);
>         //the printout seems ok
>         System.out.println("doctype = " +  
> docForPosting.getDocType()); //=null
>         FileWriter file = new FileWriter("/home/rick/deleteme/crap2");
>         //this successfully updates the data (Response Code: 200,  
> Response Message: OK)
>         xmlOutputter.output(docForPosting, file);
>
>         System.out.println("Response Code: " +  
> http.getResponseCode());
>         System.out.println("Response Message: " +  
> http.getResponseMessage());
>     }
>
>     public static void main(String[] args) {
>         MyJDomParser parser = new MyJDomParser();
>         Authenticator.setDefault(new MyAuthenticator());
>         try {
>             parser.parseUrl();
>             parser.getAllChangedElements();
>             parser.postData();
>         } catch (JDOMException e) {
>             e.printStackTrace();
>         } catch (IOException e) {
>             e.printStackTrace();
>         } catch (URISyntaxException e) {
>             e.printStackTrace();
>         } catch (ParserConfigurationException e) {
>             e.printStackTrace();
>         } catch (SAXException e) {
>             e.printStackTrace();
>         }
>     }
> }
>
> Output (snipped):
>
> preparing to change the data...
> <?xml version="1.0" encoding="UTF-8"?>
> <entry><entry /><published>0001-01-01T00:00:00+00:00</ 
> published><title>**------**</ 
> title><updated>2009-01-16T12:38:38+00:00</ 
> updated><AccountName>****55555******</ 
> AccountName><AccountNameUpper>**SHORTENED**</ 
> AccountNameUpper><CreateDate>2008-10-21T09:01:41+00:00</ 
> CreateDate><CreateUser>U6UJ9A000009</ 
> CreateUser><LastHistoryBy>ADMIN       </ 
> LastHistoryBy><LastHistoryDate>2008-10-31T13:25:58+00:00</ 
> LastHistoryDate><ModifyDate>2009-01-16T12:38:38+00:00</ 
> ModifyDate><ModifyUser>ADMIN       </ModifyUser><Status>Active</ 
> Status><Type>Corporate</Type><Prefix>Mr.</Prefix><Name>Bob</ 
> Name><Surname>Smith</Surname><Gender>Male</Gender><Idtype>I.D.</ 
> Idtype><Idpassportno>7904055766543</Idpassportno><Citizen>RSA</ 
> Citizen></entry>
> _______________________________________________
> To control your jdom-interest membership:
> http://www.jdom.org/mailman/options/jdom-interest/ 
> [email protected]

_______________________________________________
To control your jdom-interest membership:
http://www.jdom.org/mailman/options/jdom-interest/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.