Add files to the database

Wednesday, 10 October 2012 · 2 messages · last reply 11 Oct 2012
RM
Raymond Meester10 Oct 2012 15:53 #

Is it possible to add Document objects (org.w3c.dom) directly to the database without using TransformerFactory to convert it first to string?

And what if you have a File object?

CF
Charles Foster11 Oct 2012 13:40 #

Hi Raymond,

Here are some examples using the BaseX XQJ API if that helps.

// ----------------------------------------------------
// Inserting a DOM Document item
// ----------------------------------------------------
import javax.xml.xquery.*;
import javax.xml.namespace.QName;
import net.xqj.basex.BaseXXQDataSource;

import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import java.io.*;

import com.xqj2.*;

public class Test
{
  public static final Document getDocument() throws Exception
  {
    return DocumentBuilderFactory.newInstance().newDocumentBuilder().
    parse(new InputSource(new StringReader("<e>Hello World</e>")));
  };

  public static void main(String[] args) throws Exception
  {
    XQDataSource xqs = new BaseXXQDataSource();
    xqs.setProperty("serverName", "localhost");
    xqs.setProperty("port", "1984");
    xqs.setProperty("databaseName", "TEST"); // DATABASE NAME: TEST
    XQConnection2 conn = (XQConnection2)xqs.getConnection("admin", "admin");

Document doc = getDocument();

conn.insertItem( "my-document-uri.xml", conn.createItemFromNode(doc, null), null );

XQPreparedExpression px = // have to state DATEBASE NAME, in URI: conn.prepareExpression("fn:doc('TEST/my-document-uri.xml')");

XQResultSequence rs = px.executeQuery();

System.out.println(rs.getSequenceAsString(null));

    conn.close();
  }
}
// ----------------------------------------------------

// ----------------------------------------------------
// Inserting an XML Document from a File object
// ----------------------------------------------------
import javax.xml.xquery.*;
import javax.xml.namespace.QName;
import net.xqj.basex.BaseXXQDataSource;
import java.io.*;

import com.xqj2.*;

public class Test
{
  public static void main(String[] args) throws Exception
  {
    XQDataSource xqs = new BaseXXQDataSource();
    xqs.setProperty("serverName", "localhost");
    xqs.setProperty("port", "1984");
    xqs.setProperty("databaseName", "TEST"); // DATABASE NAME: TEST
    XQConnection2 conn = (XQConnection2)xqs.getConnection("admin", "admin");

conn.insertItem( "test.xml", conn.createItemFromDocument( new FileInputStream(new File("test.xml")), null, null ), null );

XQPreparedExpression px = // have to state DATEBASE NAME, in URI: conn.prepareExpression("fn:doc('TEST/test.xml')");

XQResultSequence rs = px.executeQuery();

System.out.println(rs.getSequenceAsString(null));

    conn.close();
  }
}
// ----------------------------------------------------
Quoted text · Raymond Meester · 6 lines
> Is it possible to add Document objects (org.w3c.dom) directly to the > database without using TransformerFactory to convert it first to > string? > > And what if you have a File object? >

⚡Generated with XQuery