Преобразование ByteArrayInputStream в файл XML - PullRequest
1 голос
/ 20 апреля 2010

У меня есть XML-документ, который был преобразован в поток байтов и сохранен в базе данных. Я могу получить поток байтов обратно, но как мне снова преобразовать его в файл XML?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2010

Вот несколько методов для преобразования туда и обратно в байт [] и обратно. Конечно, объект может быть строкой

   public static Object byteArrayToObject(byte[] data)
   {
      Object retObject = null;
      if (data != null)
      {
         ByteArrayInputStream bis = null;
         ObjectInputStream ois = null;
         try
         {
            bis = new ByteArrayInputStream(data);
            ois = new ObjectInputStream(bis);

            retObject = ois.readObject();
         }
         catch(StreamCorruptedException e)
         {
            e.printStackTrace(System.out);
         }
         catch(OptionalDataException e)
         {
            e.printStackTrace(System.out);
         }
         catch(IOException e)
         {
            e.printStackTrace(System.out);
         }
         catch(ClassNotFoundException e)
         {
            e.printStackTrace(System.out);
         }
         finally
         {
            try
            {
               bis.close();
            }
            catch(IOException ex)
            {
               ex.printStackTrace(System.out);
            }

            try
            {
               ois.close();
            }
            catch(IOException ex)
            {
               ex.printStackTrace(System.out);
            }
         }
      }
      return retObject;
   }

   public static byte[] objectToByteArray(Object anObject)
   {
      byte[] results = null;
      if (anObject != null)
      {
         // create a byte stream to hold the encoded object
         ByteArrayOutputStream bytes = new ByteArrayOutputStream();

         try
         {
            // create a stream to write the object
            ObjectOutputStream ostrm = new ObjectOutputStream(bytes);

            // write the object
            ostrm.writeObject(anObject);

            // ensure that the entire object is written
            ostrm.flush();

            results = bytes.toByteArray();

            try
            {
               ostrm.close();
            }
            catch (IOException e)
            {
            }

            try
            {
               bytes.close();
            }
            catch (IOException e)
            {
            }
         }
         catch (IOException e)
         {
            e.printStackTrace(System.out);
         }
      }
      return results;
   }

P.S. Этот старый код, который я выкопал на чердаке - нуждается в модернизации

0 голосов
/ 20 апреля 2010

Это действительно зависит от того, как XML сериализуется в поток байтов и т. Д., Но вы, вероятно, захотите взглянуть на класс SAXParser , особенно методы [parse ()] [2] .

[2]: http://java.sun.com/javase/6/docs/api/javax/xml/parsers/SAXParser.html#parse(java.io.InputStream, org.xml.sax.helpers.DefaultHandler)

...