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